
В первой части этой серии мы обсудили модули проверки подключения, установки некоторых пакетов и выполнения ряда команд на целевых узлах. Во второй части изучили различные модули, используемые для обработки файлов, управляющие файлами на целевых узлах.
В этой части серии мы узнаем о модуле, который используется при обработке сервиса (модуль service), модулях управления пользователями и группами (модуль user и модуль group), модуле управления cron (модуль cron), модуле печати сообщений во время выполнения плейбука (модуль debug) и модулях, включающих переменные и роли (модуль include_vars и модуль include_role).
Начнём…
Модуль service
Модуль service используется для управления сервисом на целевых узлах, можно запускать/останавливать/перезапускать/перезагружать сервис через этот модуль. Для целевого устройства на базе Windows можно использовать модуль win_service.
--- - name: service module hosts: all tasks: - name: Start service httpd, if not started service: name: httpd state: started - name: Stop service httpd, if started service: name: httpd state: stopped - name: Restart service httpd, in all cases service: name: httpd state: restarted - name: Reload service httpd, in all cases service: name: httpd state: reloaded
Модуль user
Модуль user используется для управления пользователями на целевых узлах. На сервисной панели пользовательский модуль использует команды useradd для добавления, usermod для изменения и userdel для удаления пользователей. Можно определить идентификатор пользователя, группу, оболочку, пароль и т.д. Для целевого устройства на базе Windows можно использовать модуль win_user.
--- - name: user module hosts: all tasks: - name: Add the user 'johnd' with a specific uid and group of 'admin' user: name: johnd comment: John Doe uid: 1040 group: admin - name: Add the user 'james' with a bash shell, appending the group 'admins' and 'developers' to the user's groups user: name: james shell: /bin/bash groups: admins,developers append: yes - name: Remove the user 'johnd' user: name: johnd state: absent remove: yes - name: Create a 2048-bit SSH key for user jsmith in ~jsmith/.ssh/id_rsa user: name: jsmith generate_ssh_key: yes ssh_key_bits: 2048 ssh_key_file: .ssh/id_rsa - name: Added a consultant whose account you want to expire user: name: james18 shell: /bin/zsh groups: developers expires: 1422403387
Модуль group
Модуль group используется при управлении группами на целевых узлах. На серверном уровне этот модуль использует groupadd для создания, groupmod для изменения и groupdel для удаления групп. Для целевого устройства на базе Windows можно использовать модуль win_group.
--- - name: group module hosts: all tasks: - name: Ensure group "somegroup" exists group: name: somegroup state: present - name: Ensure group "docker" exists with correct gid group: name: docker state: present gid: 1750 - name: deleting a group group: name: groupA state: absent
Модуль cron
Модуль cron используется для управления записями crontab и определения переменных среды.
--- - name: cron module hosts: all tasks: - name: Ensure a job that runs at 2 and 5 exists. Creates an entry like "0 5,2 * * sh script.sh" cron: name: "check dirs" minute: "0" hour: "5,2" job: "sh script.sh" - name: 'Delete a job from the crontab' cron: name: "an old job" state: absent - name: Creates an entry like "APP_HOME=/srv/app" and insert it after PATH declaration cron: name: APP_HOME env: yes job: /srv/app insertafter: PATH
Модуль debug
Модуль debug используется для вывода инструкции во время выполнения плейбука и может быть полезен при отладке переменных или выражений. Можно использовать свойство msg для отображения пользовательского сообщения и свойство var для отображения переменной.
--- - name: debug module hosts: all tasks: - name: Print a simple statement debug: msg: "Hello World! A custom message" - name: Get uptime information shell: /usr/bin/uptime register: result - name: Print return information from the previous task debug: var: result verbosity: 2
Модуль include_vars
Модуль include_vars может использоваться для динамической загрузки переменной из файла или каталога во время выполнения задачи. Следует иметь в виду, что любая переменная, установленная с помощью set_fact, не будет перезаписана с помощью include_vars.
--- - name: include_vars module hosts: all tasks: - name: include a variable file include_vars: file: name_vars.yml - name: include a variable file conditionally include_vars: file: vars-Debian.yml when: ansible_os_family == 'Debian' - name: Include all .yaml files in vars directory except bastion.yaml include_vars: dir: vars ignore_files: - 'bastion.yaml' extensions: - 'yaml'
Модуль include_rules
Этот модуль динамически загружает и выполняет указанную роль в качестве задачи.
--- - name: include_roles module hosts: all tasks: - name: include role myrole include_role: name: myrole - name: Run tasks/other.yaml instead of main.yaml include_role: name: myrole tasks_from: other - name: Pass variables to role include_role: name: myrole vars: rolevar1: value from task - name: Conditional role include_role: name: myrole when: not idontwanttorun
В этой серии мы рассмотрели самые важные модули Ansible. С их помощью вы можете настроить IT-инфраструктуру, а также автоматизировать вашу IT-среду.

Курс «Ansible: Infrastructure as Code»

ссылка на оригинал статьи https://habr.com/ru/company/southbridge/blog/709860/
Добавить комментарий