Ansible: 30 самых важных модулей для DevOps-профессионалов (часть 3)

от автора

В первой части этой серии мы обсудили модули проверки подключения, установки некоторых пакетов и выполнения ряда команд на целевых узлах. Во второй части изучили различные модули, используемые для обработки файлов, управляющие файлами на целевых узлах.

В этой части серии мы узнаем о модуле, который используется при обработке сервиса (модуль 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»

Курс «DevOps Tools»


ссылка на оригинал статьи https://habr.com/ru/company/southbridge/blog/709860/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *