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

895111405e754de49dc733336ace20f0.png

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

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

0ee91d337903bd5c4b7879104488149a.png

Курс «Ansible: Infrastructure as Code»

9654ecfcdeef7ef39568d2cc5549a89d.png

Курс «DevOps Tools»

© Habrahabr.ru