Skip to content

Latest commit

 

History

History

08-ansible-01-base

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

Подготовка к выполнению

  1. Установите ansible версии 2.10 или выше.
ansible --version
ansible [core 2.12.10]
  1. Создайте свой собственный публичный репозиторий на github с произвольным именем.
  2. Скачайте playbook из репозитория с домашним заданием и перенесите его в свой репозиторий.

Основная часть

  1. Попробуйте запустить playbook на окружении из test.yml, зафиксируйте какое значение имеет факт some_fact для указанного хоста при выполнении playbook'a.
playbook$ ansible-playbook site.yml -i inventory/test.yml
TASK [Print fact] *************************************************************************************************************************************************************************************************************
ok: [localhost] => {
    "msg": 12
}

some_fact = 12 2. Найдите файл с переменными (group_vars) в котором задаётся найденное в первом пункте значение и поменяйте его на 'all default fact'.

playbook$ ansible-playbook site.yml -i inventory/test.yml
TASK [Print fact] *************************************************************************************************************************************************************************************************************
ok: [localhost] => {
    "msg": "all default fact"
}
  1. Воспользуйтесь подготовленным (используется docker) или создайте собственное окружение для проведения дальнейших испытаний. Т.к. в этом дз нет установки ПО через ansible, для простоты воспользуюсь окружением local.
  2. Проведите запуск playbook на окружении из prod.yml. Зафиксируйте полученные значения some_fact для каждого из managed host.
playbook$ ansible-playbook -i inventory/prod.yml site.yml
TASK [Print fact] *************************************************************************************************************************************************************************************************************
ok: [centos7] => {
    "msg": "el"
}
ok: [ubuntu] => {
    "msg": "deb"
}
  1. Добавьте факты в group_vars каждой из групп хостов так, чтобы для some_fact получились следующие значения: для deb - 'deb default fact', для el - 'el default fact'.
  2. Повторите запуск playbook на окружении prod.yml. Убедитесь, что выдаются корректные значения для всех хостов.
playbook$ ansible-playbook -i inventory/prod.yml site.yml
TASK [Print fact] *************************************************************************************************************************************************************************************************************
ok: [centos7] => {
    "msg": "el default fact"
}
ok: [ubuntu] => {
    "msg": "deb default fact"
}
  1. При помощи ansible-vault зашифруйте факты в group_vars/deb и group_vars/el с паролем netology.
playbook$ ansible-vault encrypt group_vars/deb/examp.yml
New Vault password: 
Confirm New Vault password: 
Encryption successful

playbook$ ansible-vault encrypt group_vars/el/examp.yml 
New Vault password: 
Confirm New Vault password: 
Encryption successful
  1. Запустите playbook на окружении prod.yml. При запуске ansible должен запросить у вас пароль. Убедитесь в работоспособности.
playbook$ ansible-playbook -i inventory/prod.yml site.yml --ask-vault-pass
Vault password: 
TASK [Print fact] *************************************************************************************************************************************************************************************************************
ok: [centos7] => {
    "msg": "el default fact"
}
ok: [ubuntu] => {
    "msg": "deb default fact"
}
  1. Посмотрите при помощи ansible-doc список плагинов для подключения. Выберите подходящий для работы на control node.
playbook$ ansible-doc --list --type=connection
...                                                                                                                                               
local                          execute on controller                                                                                                                                                                      
paramiko_ssh                   Run tasks via python ssh (paramiko)                                                                                                                                                        
psrp                           Run tasks over Microsoft PowerShell Remoting Protocol                                                                                                                                      
ssh                            connect via SSH client binary                                                                                                                                                              
  1. В prod.yml добавьте новую группу хостов с именем local, в ней разместите localhost с необходимым типом подключения.
playbook$ cat inventory/prod.yml 
...
  local:
    hosts:
      localhost:
        ansible_connection: local
  1. Запустите playbook на окружении prod.yml. При запуске ansible должен запросить у вас пароль. Убедитесь что факты some_fact для каждого из хостов определены из верных group_vars.
playbook$ ansible-playbook -i inventory/prod.yml site.yml --ask-vault-pass
Vault password: 
TASK [Print fact] *************************************************************************************************************************************************************************************************************
ok: [centos7] => {
    "msg": "el default fact"
}
ok: [ubuntu] => {
    "msg": "deb default fact"
}
ok: [localhost] => {
    "msg": "all default fact"
}
  1. Заполните README.md ответами на вопросы. Сделайте git push в ветку master. В ответе отправьте ссылку на ваш открытый репозиторий с изменённым playbook и заполненным README.md.

Необязательная часть

  1. При помощи ansible-vault расшифруйте все зашифрованные файлы с переменными.
  2. Зашифруйте отдельное значение PaSSw0rd для переменной some_fact паролем netology. Добавьте полученное значение в group_vars/all/exmp.yml.
  3. Запустите playbook, убедитесь, что для нужных хостов применился новый fact.
  4. Добавьте новую группу хостов fedora, самостоятельно придумайте для неё переменную. В качестве образа можно использовать этот.
  5. Напишите скрипт на bash: автоматизируйте поднятие необходимых контейнеров, запуск ansible-playbook и остановку контейнеров.
  6. Все изменения должны быть зафиксированы и отправлены в вашей личный репозиторий.