Учебное пособие по Ansible для начинающих: сборник инструкций, команды и примеры

Что такое Ansible?

анзибль — это инструмент автоматизации и оркестрации с открытым исходным кодом для предоставления программного обеспечения, управления конфигурацией и развертывания программного обеспечения. Ansible позволяет легко запускать и настраивать Unix-подобные системы, а также Windows системы для предоставления инфраструктуры в виде кода. Он содержит собственный декларативный язык программирования для настройки и управления системой.

Ansible популярен благодаря простоте установки, простоте использования в том, что касается подключения к клиентам, отсутствию агента для клиентов Ansible и множеству навыков. Функционирует при подключении через SSH клиентам, поэтому ему не нужен специальный агент на стороне клиента, и, отправляя модули клиентам, модули затем выполняются локально на стороне клиента, а выходные данные передаются обратно на сервер Ansible.

Поскольку он использует SSH, он может очень легко подключаться к клиентам с помощью SSH-ключей, что упрощает весь процесс. Клиент деtails, как имена хостов или IP-адреса и порты SSH, хранятся в файлах, называемых файлами инвентаризации. После того как вы создали файл инвентаризации и заполнили его, ansible сможет его использовать.

Зачем использовать Ansible?

Вот некоторые важные плюсы/преимущества использования Ansible

  • Одним из наиболее значительных преимуществ Ansible является то, что его может использовать каждый.
  • Для установки и использования Ansible не требуются специальные навыки системного администратора, а официальная документация очень обширна.
  • Его модульность в отношении плагинов, модулей, реестров и сборников сценариев делает Ansible идеальным компаньоном для организации больших сред.
  • Ansible очень легкий и последовательный, и в нем нет ограничений в отношении operating-система или базовое оборудование присутствуют.
  • Он также очень безопасен благодаря своим возможностям без агентов и использованию функций безопасности OpenSSH.
  • Еще одним преимуществом, которое стимулирует внедрение Ansible, является его плавная кривая обучения, определяемая обширной документацией, а также простая в освоении структура и конфигурация.

История Ансибля

Вот важные вехи из истории ansible:

  • В феврале 2012 года стартовал проект Ansible. Впервые он был разработан Майклом ДеХааном, создателем Cobbler и Func, унифицированного сетевого контроллера Fedora.
  • Первоначально называвшаяся AnsibleWorks Inc, компания, финансирующая инструмент ansible, была приобретена в 2015 году RedHat и later on вместе с RedHat перешёл под эгидой IBM.
  • В настоящее время Ansible включен в такие дистрибутивы, как Fedora Linux, RHEL, Centos и Oracle Linux.

Важные термины, используемые в Ansible

  • Анзибль-сервер

    Машина, на которой установлен Ansible и с которой будут запускаться все задачи и плейбуки.

  • Модули

    По сути, модуль — это команда или набор аналогичных команд Ansible, предназначенных для выполнения на стороне клиента.

  • Сложность задачи

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

  • Роли

    Способ организации задач и связанных с ними файлов. later позвонил в сборник пьес

  • Факт

    Информация, полученная из клиентской системы из глобальных переменных со сбором фактов. operaпроизводство

  • Каталог

    Файл, содержащий данные о клиентских серверах ansible. Определено в later примеры в виде файла хостов

  • Играть

    Исполнение пьесы

  • Handler

    Задача, которая вызывается только при наличии уведомителя

  • Notifier

    Раздел, приписываемый задаче, которая вызывает обработчик, если выходные данные изменены

  • Тег

    Имя присвоено задаче, которую можно использовать later на выдачу только этой конкретной задачи или группы задач.

Установка Ansible в Linux

После того, как вы сравнили и взвесили свои варианты и решили выбрать Ansible, следующим шагом будет его установка в вашей системе. Мы пройдем этапы установки в разных Linux дистрибутивы, самые популярные из них, в следующем небольшом уроке.

Установите Ansible в системах Centos/RedHat.

Шаг 1) Установить репозиторий EPEL

[root@ansible-server ~]# sudo yum install epel-release

Шаг 2) Установить ansible-пакет

[root@ansible-server ~]# sudo  yum install -y ansible

Установите Ansible в системах Centos/RedHat.

Установите анзибль на Ubuntu/Системы Debian

Шаг 1) Выполните обновление пакетов

$ sudo apt update

Шаг 2) Установите общий пакет свойств программного обеспечения.

$ sudo apt install software-properties-common

Шаг 3) Установите персональный пакет ansible archive

$ sudo apt-add-repository ppa:ansible/ansible

Шаг 4) Установите анзибль

$ sudo apt update
$ sudo apt install ansible

Специальные команды Ansible

Один из самых простых способов использования Ansible — использование специальных команд. Их можно использовать, когда вы хотите выполнить некоторые команды на сервере или группе серверов. Специальные команды не сохраняются для использования в будущем, но представляют собой быстрый способ взаимодействия с нужными серверами.

В этом руководстве по Ansible будет настроен простой файл хостов двух серверов, содержащий хост1 и хост2.

Вы можете убедиться, что хосты доступны с сервера ansible, выполнив команду ping на всех хостах.

[root@ansible-server test_ansible]# ansible -i hosts all -m ping
host1 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
host2 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

Специальные команды Ansible

Объяснение:

  1. Статус команды, в данном случае УСПЕХ
  2. Хост, на котором выполнялась команда
  3. Команда, выдаваемая через параметр -m, в данном случае ping
  4. С помощью параметра -i вы можете указать файл хостов.


При необходимости вы можете выполнить одну и ту же команду только на определенном хосте.

[root@ansible-server test_ansible]# ansible -i hosts all -m ping --limit host2
host2 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

Специальные команды Ansible

Объяснение:

  1. Параметр Limit можно использовать для выдачи команд только на определенных хостах в файле хоста.
  2. Имя хоста, определенное в файле инвентаризации.

Если вам нужно быстро скопировать файл в несколько мест назначения, вы можете использовать модуль копирования в ansible, который использует SCP. Итак, команда и ее вывод выглядят следующим образом:

[root@ansible-server test_ansible]# ansible -i hosts all -m copy -a "src=/root/test_ansible/testfile dest=/tmp/testfile"
host1 | SUCCESS => {
    "changed": true,
    "checksum": "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "dest": "/tmp/testfile",
    "gid": 0,
    "group": "root",
    "md5sum": "d41d8cd98f00b204e9800998ecf8427e",
    "mode": "0644",
    "owner": "root",
    "size": 0,
    "src": "/root/.ansible/tmp/ansible-tmp-1562216392.43-256741011164877/source",
    "state": "file",
    "uid": 0
}
host2 | SUCCESS => {
    "changed": true,
    "checksum": "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "dest": "/tmp/testfile",
    "gid": 0,
    "group": "root",
    "md5sum": "d41d8cd98f00b204e9800998ecf8427e",
    "mode": "0644",
    "owner": "root",
    "size": 0,
    "src": "/root/.ansible/tmp/ansible-tmp-1562216392.6-280302911361278/source",
    "state": "file",
    "uid": 0
}

Специальные команды Ansible

Объяснение:

  1. Копировать модуль определен
  2. Аргументами модуля в данном случае являются абсолютный путь источника и абсолютный путь назначения.
  3. Вывод команды Ansible, отражающий успех команды копирования и других действий.tails например, контрольные суммы sha1 или md5 для проверки целостности файла и метаданные, такие как владелец, размер или разрешения. Установить пакет на нескольких серверах не составляет труда. В Ansible есть несколько модулей, которые взаимодействуют с используемыми установщиками, например yum, apt, dnf и т. д.

В следующем примере вы узнаете, как установить пакет через модуль yum на два хоста Centos.

[root@ansible-server test_ansible]# ansible -i hosts all -m yum -a 'name=ncdu state=present'
host1 | SUCCESS => {
    "changed": true,
    "msg": "",
    "rc": 0,
    "results": [


"Loaded plugins: fastestmirror\nLoading mirror speeds from cached hostfile\n * base: mirror.netsite.dk\n * elrepo: mirrors.xservers.ro\n * epel: fedora.mirrors.telekom.ro\n * extras: centos.mirrors.telekom.ro\n * remi-php70: remi.schlundtech.de\n * remi-safe: remi.schlundtech.de\n * updates: centos.mirror.iphh.net\nResolving Dependencies\n--> Running transaction check\n---> Package ncdu.x86_64 0:1.14-1.el7 will be installed\n--> Finished Dependency Resolution\n\nDependencies Resolved\n\n================================================================================\n Package         Arch              Version                Repository       Size\n================================================================================\nInstalling:\n ncdu            x86_64            1.14-1.el7             epel             51 k\n\nTransaction Summary\n================================================================================\nInstall  1 Package\n\nTotal download size: 51 k\nInstalled size: 87 k\nDownloading packages:\nRunning transaction check\nRunning transaction test\nTransaction test succeeded\nRunning transaction\n  Installing : ncdu-1.14-1.el7.x86_64                                       1/1 \n  Verifying  : ncdu-1.14-1.el7.x86_64                                       1/1 \n\nInstalled:\n  ncdu.x86_64 0:1.14-1.el7                                                      \n\nComplete!\n"
    ]
}
host2 | SUCCESS => {
    "changed": true,
    "msg": "",
    "rc": 0,
    "results": [
        "Loaded plugins: fastestmirror\nLoading mirror speeds from cached hostfile\n * base: mirror.netsite.dk\n * elrepo: mirrors.leadhosts.com\n * epel: mirrors.nav.ro\n * extras: centos.mirrors.telekom.ro\n * remi-php70: mirrors.uni-ruse.bg\n * remi-safe: mirrors.uni-ruse.bg\n * updates: centos.mirror.iphh.net\nResolving Dependencies\n--> Running transaction check\n---> Package ncdu.x86_64 0:1.14-1.el7 will be installed\n--> Finished Dependency Resolution\n\nDependencies Resolved\n\n================================================================================\n Package         Arch              Version                Repository       Size\n================================================================================\nInstalling:\n ncdu            x86_64            1.14-1.el7             epel             51 k\n\nTransaction Summary\n================================================================================\nInstall  1 Package\n\nTotal download size: 51 k\nInstalled size: 87 k\nDownloading packages:\nRunning transaction check\nRunning transaction test\nTransaction test succeeded\nRunning transaction\n  Installing : ncdu-1.14-1.el7.x86_64                                       1/1 \n  Verifying  : ncdu-1.14-1.el7.x86_64                                       1/1 \n\nInstalled:\n  ncdu.x86_64 0:1.14-1.el7                                                      \n\nComplete!\n"
    ]
}

Специальные команды Ansible

Объяснение:

  1. В этом примере используется модуль Yum.
  2. Он определяет аргументы модуля, и в этом случае вы выбираете имя пакета и его состояние. Например, если состояние отсутствует, пакет будет найден и, если найден, удален.
  3. Когда он окрашен в желтый цвет, вы увидите вывод команды ansible с измененным состоянием, что в данном случае означает, что пакет был найден и установлен.
  4. Статус команды установки yum, выданной через ansible. В данном случае был установлен пакет ncdu.x86_64 0:1.14-1.el7.

Конечно, все параметры установщика yum можно использовать через ansible, включая обновление, установку, последнюю версию или удаление.

В приведенном ниже примере была введена та же команда для удаления ранее установленного пакета ncdu.

[root@ansible-server test_ansible]# ansible -i hosts all -m yum -a 'name=ncdu state=absent'
host1 | SUCCESS => {
    "changed": true,
    "msg": "",
    "rc": 0,
    "results": [
        "Loaded plugins: fastestmirror\nResolving Dependencies\n--> Running transaction check\n---> Package ncdu.x86_64 0:1.14-1.el7 will be erased\n--> Finished Dependency Resolution\n\nDependencies Resolved\n\n================================================================================\n Package         Arch              Version               Repository        Size\n================================================================================\nRemoving:\n ncdu            x86_64            1.14-1.el7            @epel             87 k\n\nTransaction Summary\n================================================================================\nRemove  1 Package\n\nInstalled size: 87 k\nDownloading packages:\nRunning transaction check\nRunning transaction test\nTransaction test succeeded\nRunning transaction\n  Erasing    : ncdu-1.14-1.el7.x86_64                                       1/1 \n  Verifying  : ncdu-1.14-1.el7.x86_64                                       1/1 \n\nRemoved:\n  ncdu.x86_64 0:1.14-1.el7                                                      \n\nComplete!\n"
    ]
}
host2 | SUCCESS => {
    "changed": true,
    "msg": "",
    "rc": 0,
    "results": [
        "Loaded plugins: fastestmirror\nResolving Dependencies\n--> Running transaction check\n---> Package ncdu.x86_64 0:1.14-1.el7 will be erased\n--> Finished Dependency Resolution\n\nDependencies Resolved\n\n================================================================================\n Package         Arch              Version               Repository        Size\n================================================================================\nRemoving:\n ncdu            x86_64            1.14-1.el7            @epel             87 k\n\nTransaction Summary\n================================================================================\nRemove  1 Package\n\nInstalled size: 87 k\nDownloading packages:\nRunning transaction check\nRunning transaction test\nTransaction test succeeded\nRunning transaction\n  Erasing    : ncdu-1.14-1.el7.x86_64                                       1/1 \n  Verifying  : ncdu-1.14-1.el7.x86_64                                       1/1 \n\nRemoved:\n  ncdu.x86_64 0:1.14-1.el7                                                      \n\nComplete!\n"
    ]
}

Специальные команды Ansible

Объяснение:

  1. Вывод команды yum показывает, что пакет был удален.

Еще одна полезная и важная функция, которую Ansible использует для взаимодействия с клиентским сервером, — это сбор некоторых фактов о системе. Таким образом, он извлекает из системы информацию об оборудовании, программном обеспечении и версиях и сохраняет каждое значение в переменной, которую можно later на б/у.

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

Специальные команды Ansible

Анзибль-плейбуки

Анзибль-плейбуки — это способ отправки команд удаленным системам с помощью сценариев. Ansible playbooks используются для настройки com.plex системные среды для повышения гибкости путем выполнения сценария в одной или нескольких системах. Учебники Ansible, как правило, являются скорее языком конфигурации, чем языком программирования.

Команды Ansible playbook используют формат YAML, поэтому не требуется много синтаксиса, но необходимо соблюдать отступы. Как следует из названия, сборник пьес — это сборник пьес. С помощью сборника сценариев вы можете назначить определенные роли одним хостам и другие роли другим хостам. Таким образом, вы можете управлять несколькими серверами в самых разных сценариях, и все это в одном сборнике сценариев.

Чтобы иметь все деtails Прежде чем продолжить рассмотрение примеров сборников схем Ansible, мы должны сначала определить задачу. Это интерфейс к модулям ansible для ролей и плейбуков.

Теперь давайте изучим сборник пьес Ansible на примере одного сборника пьес с одним воспроизведением, содержащего несколько задач, как показано ниже:

---

- hosts: group1
  tasks:
  - name: Install lldpad package
    yum:
      name: lldpad
      state: latest
  - name: check lldpad service status
    service:
      name: lldpad
      state: started

Анзибль-плейбуки

В приведенном выше примере плейбука Ansible группа1 хостов в файле хоста предназначена для установки пакета lldpad с использованием модуля yum, а затем запускается служба lldpad, созданная после установки, с использованием служебного модуля, используемого в основном для взаимодействия с ансамблем systemd.

Объяснение:

  1. Группа хостов, на которых будет работать playbook
  2. Модуль Yum используется в этой задаче для установки lldpad.
  3. Сервисный модуль используется для проверки работоспособности службы после установки.

Каждый ansible playbook работает с файлом инвентаря. Файл инвентаризации содержит список серверов, разделенных на группы для лучшего контроля заtails " У аборигенов IP-адрес и порт SSH для каждого хоста.

Файл инвентаря, который вы можете использовать для этого примера плейбука Ansible, выглядит, как показано ниже. Существует две группы с именами group1 и group2, каждая из которых содержит хост1 и хост2 соответственно.

[group1]
host1 ansible_host=192.168.100.2 ansible_ssh_port=22
[group2]
host2 ansible_host=192.168.100.3 ansible_ssh_port=22

Анзибль-плейбуки

Объяснение:

  1. Имя группы
  2. Имя хоста с IP-адресом и портом SSH, в данном случае по умолчанию — 22.

Следующий полезный пример сборника пьес Ansible, на этот раз содержащий две пьесы для двух хостов. Для первой группы хостов group1 будет включен selinux. Если он включен, то на экране хоста появится сообщение.

Для второй группы хостов пакет httpd будет установлен только в том случае, если ansible_os_family — RedHat, а ansible_system_vendor — HP.

Ansible_os_family и ansible_system_vendor — это переменные, собранные с помощью опции сбора_фактов, и их можно использовать, как в этом условном примере.

---

- hosts: group1
  tasks:
  - name: Enable SELinux
    selinux:
      state: enabled
    when: ansible_os_family == 'Debian'
    register: enable_selinux

  - debug:
      Imsg: "Selinux Enabled. Please restart the server to apply changes."
    when: enable_selinux.changed == true

- hosts: group2
  tasks:
  - name: Install apache
    yum:
      name: httpd
      state: present
    when: ansible_system_vendor == 'HP' and ansible_os_family == 'RedHat'

Анзибль-плейбуки

Объяснение:

  1. Пример предложения When. В данном случае тип ОС — Debian. Переменная ansible_os_family собирается с помощью функции сбора_фактов.
  2. Вывод задачи регистрируется для будущего использования под именем Enable_selinux.
  3. Еще один пример предложения When. В этом случае будет отображено сообщениеyed для пользователя хоста, если SELinux действительно был включен ранее.
  4. Еще один пример предложения When, состоящего из двух правил.

Помимо задач, существуют еще отдельные задачи, называемые обработчиками. Обработчики должны иметь уникальное имя во всей книге пьес. Они работают так же, как обычная задача, но обработчик может быть уведомлен через уведомитель.

Если обработчик не уведомлен во время запуска книги воспроизведения, он не запустится. Однако если обработчик уведомляется более чем одной задачей, он будет запущен только один раз после завершения всех задач.

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

---

- hosts: group2
  tasks:
  - name: sshd config file modify port
    lineinfile:
     path: /etc/ssh/sshd_config
     regexp: 'Port 28675'
     line: '#Port 22'
    notify:
       - restart sshd
handlers
    - name: restart sshd
      service: sshd
        name: sshd
        state: restarted

В этом случае, если первая задача «Порт изменения файла конфигурации sshd» будет изменена, то есть если порт изначально не 28675, то он будет изменен, и задача уведомит обработчик с тем же именем о необходимости запуска. , и он перезапустит службу sshd.

Анзибль-плейбуки

Объяснение:

  1. Пример уведомления
  2. Пример обработчика

Ансибл Роли

Имея дело с обширными сборниками сценариев, проще разделить задачи на роли. Это также помогает повторно использовать роли в будущем. Роли — это набор задач, которые можно перемещать из одного плейбука в другой, запускать независимо, но только через файл плейбука.

Роли хранятся в отдельных каталогах и имеют определенную структуру каталогов.

[root@ansible-server test2]# tree
.
`-- role1
    |-- defaults
    |   `-- main.yml
    |-- handlers
    |   `-- main.yml
    |-- meta
    |   `-- main.yml
    |-- README.md
    |-- tasks
    |   `-- main.yml
    |-- tests
    |   |-- inventory
    |   `-- test.yml
    `-- vars
        `-- main.yml

7 directories, 8 files

Файл yaml в каталоге defaults содержит список переменных по умолчанию, которые будут использоваться вместе с книгой воспроизведения. Каталог handlers используется для хранения обработчиков. Метакаталог должен содержать информацию об авторе и ролевых зависимостях. В каталоге задач находится основной файл yaml для роли.

Каталог тестов содержит образец файла книги воспроизведения yaml и образец файла инвентаризации и в основном используется в целях тестирования перед созданием фактической роли.

Каталог vars содержит файл yaml, в котором будут определены все переменные, используемые ролью. Шаблоны каталогов и файлы каталогов должны содержать файлы и шаблоны, которые будут использоваться задачами в этой роли.

Чтобы создать дерево каталогов для роли, вы должны использовать следующийwing команда с последним параметром, именем роли:

[root@ansible-server test2]# ansible-galaxy init role1

Ansible также хорошо работает с шаблонами. В качестве языка шаблонов используется Jinja2.

В следующем примере вы узнаете, как выглядит базовый шаблон jinja2, и сможете использовать его в роли.

Во время выполнения, в зависимости, скажем, от того, в каком центре обработки данных расположен ваш сервер, вы можете выбрать один из нескольких серверов имен, каждый из которых соответствует центру обработки данных, используя переменную «resolver_ip_addresses».

{% for resolver in resolver_ip_addresses %}
nameserver {{ resolver }}
{% endfor %}

options timeout:1
options attempts:5
options rotate

В этом примере в каталоге playbook определены некоторые переменные, включая переменную с именемsolver_ip_addresses с разными значениями в зависимости от центра обработки данных.

- name: Set resolver for server
  template:
    src: dns.j2
    dest: /etc/resolv.conf
    group: root
    owner: root
    mode: "0644"
    tag: resolver	

Ансибл Роли

Объяснение:

  1. Имя шаблона, который будет использоваться. Шаблон находится в каталоге шаблонов пути к роли.
  2. Путь назначения имени файла, который будет заменен шаблоном, на стороне клиента.
  3. Разрешения файла назначения

Ролевые задачи также могут иметь поле тега, которому присвоено имя. Один и тот же тег может использоваться несколькими задачами. При запуске ansible playbook вы также можете указать тег, чтобы эти задачи были выполнены.

Пример использования Ansible

В этом разделе мы проанализируем практический пример важного сборника сценариев Ansible, который выполняет три роли. Целью этого является дать практический пример того, о чем мы говорили ранее. Некоторые примеры, использованные ранее в этом руководстве по сборнику пьес Ansible, будут адаптированы и использованы в этом сборнике пьес.

Ниже приведена структура каталогов playbook. Будет использован файл Yaml p4.yml.

[root@ansible-server test_ansible]# ls -lrth
total 16K
-rw-r--r--. 1 root root   0 Jul  3 10:13 testfile
-rw-r--r--. 1 root root 203 Jul  3 13:30 p1.yml
-rw-r--r--. 1 root root 125 Jul  3 15:00 hosts
-rw-r--r--. 1 root root 488 Jul  3 16:40 p2.yml
-rw-r--r--. 1 root root 188 Jul  4 17:33 p4.yml
drwxr-xr-x. 5 root root  47 Jul  4 17:35 roles
[root@ansible-server test_ansible]# cd roles
[root@ansible-server roles]# ls -lrth
total 12K
drwxr-xr-x. 9 root root 4.0K Jul  4 12:52 httpd
drwxr-xr-x. 9 root root 4.0K Jul  4 13:55 selinux
drwxr-xr-x. 9 root root 4.0K Jul  4 16:54 resolver

В книге воспроизведения есть три роли, одна из которых называется преобразователем, который устанавливает конкретный сервер имен на серверах путем копирования файла с сервера в место назначения /etc/resolv.conf. Другой называется httpd, он устанавливает пакет httpd с модулем yum, а третий включает SELinux и уведомляет вошедшего в систему пользователя о необходимости перезагрузки системы. Каждая роль была создана с помощью команды ansible-galaxy.

Роль преобразователя, задача main.yml:

Пример использования Ansible

Роль Httpd, задача main.yml:

Пример использования Ansible

Роль Selinux, задача main.yml:

Пример использования Ansible

Ниже определена книга воспроизведения p4.yml. Он будет работать на всех хостах, если не на других.wise указанный в командной строке, он будет работать от имени пользователя root на порту 22 (SSH), он будет собирать факты перед запуском ролей и запускать все три роли, упомянутые ранее. Каждую роль можно запускать независимо, указав тег в командной строке ansible-playbook с параметром –t.

---

- hosts: all
  user: root
  port: 22
  gather_facts: True
  roles:
    - { role: selinux, tags: selinux }
    - { role: httpd, tags: httpd }
    - { role: resolver, tags: resolver }

Запуск плейбука p4.yml на двух хостах и ​​интерпретация вывода. Эту же команду можно запустить с параметром –check для пробного прогона. Если вы хотите использовать аутентификацию по паролю, используйте параметр -k.

Пример использования Ansible

Объяснение:

  1. Команда Ansible-playbook, запускающая p4.yml
  2. Playbook пропускает роль SELinux, поскольку она уже включена.
  3. Ansible обнаружил, что пакет httpd уже установлен, поэтому возвращается нормально.
  4. Резолвер был установлен, а статус резолвера ролей изменился.

Шпаргалка по командам Ansible

Установите репозиторий EPEL в системах Centos/RHEL.

[root@ansible-server ~]# sudo yum install epel-release

Установите пакет ansible в системах Centos/RHEL.

[root@ansible-server ~]# sudo  yum install -y ansible

Выполните обновление пакетов в Debian/Ubuntu системы

$ sudo apt update

Установите пакет Software-Properties-Common на Debian/Ubuntu системы

$ sudo apt install software-properties-common

Установите персональный пакет ansible archiя на Debian/Ubuntu системы

$ sudo apt-add-repository ppa:ansible/ansible

Установите ansible на Debian/Ubuntu системы

$ sudo apt update
$ sudo apt install ansible

Выполните команду ping на всех серверах, определенных в файле инвентаризации с именем hosts.

 
[root@ansible-server test_ansible]# ansible -i hosts all -m ping

Выполните команду ping только на хосте2

[root@ansible-server test_ansible]# ansible -i hosts all -m ping --limit host2

Скопируйте файл «testfile» на все хосты в файл инвентаря.

[root@ansible-server test_ansible]# ansible -i hosts all -m copy -a "src=/root/test_ansible/testfile dest=/tmp/testfile"

Установите пакет ncdu на все хосты

[root@ansible-server test_ansible]# ansible -i hosts all -m yum -a 'name=ncdu state=present'

Удалить пакет ncdu на всех хостах

[root@ansible-server test_ansible]# ansible -i hosts all -m yum -a 'name=ncdu state=absent'

Создайте структуру каталогов для роли с именем role1.

[root@ansible-server test2]# ansible-galaxy init role1

Пробный сценарий p4.yml

[root@ansible-server test_ansible]# ansible-playbook -i hosts p4.yml --check

Запустите playbook p4.yml с аутентификацией по паролю для всех хостов.

[root@ansible-server test_ansible]# ansible-playbook -i hosts p4.yml -k

Итого

В мире технологий, которые постоянно меняются быстрыми темпами и растут.wing В то же время невероятно быстро системным администраторам и инженерам по DevOps приходится думать о различных подходах к автоматизации рутинных задач и оркестрации больших пулов серверов.

Хотя есть много альтернатива Ансиблу (Chef, Puppet), которые делают то же самое с некоторыми отличиями, Ansible сумел превзойти их всех благодаря своей простоте, улучшенной безопасности и, что наиболее важно, плавной кривой обучения. Благодаря этим качествам и быстрому внедрению Ansible мы создали руководство, полное примеров, чтобы вы могли получить еще более удобный первый опыт работы с Ansible.

В этом руководстве по основам Ansible мы описали ansible и немного рассказали о его истории. Мы упомянули сtronОсновные моменты Ansible и преимущества, которые Ansible может принести в автоматизацию и оркестровку инфраструктур различных размеров. Мы определили основные используемые термины Ansible и определили структуру сборников сценариев Ansible. Всю информацию сопровождают подробные примеры с подробными пояснениями.