Skip to content

Ansible

andyceo edited this page Jun 26, 2019 · 9 revisions

Настройка

Заменить в файле конфигурации ansible:

hash_behaviour = merge

Разработка своих модулей

Подробно описана в многочисленных туториалах. Важно! Чтобы файлик модуля был без расширения .py, т.е. имя файла должно в точности соответствовать имени модуля, иначе Ansible не поймет.

Ссылки:

Работа с Docker

Работа с Vault (безопасно храним пароли в репозитории)

  • В корне ansible-репозитория создадим файл с мастер-паролем (ключем) для Vault, с помощью которого мы будем шифровать файлы:

      touch .vault_pass.txt
      cat .vault_pass.txt # 123qwe - ваш пароль
    
  • Добавим этот файл в .gitignore, чтобы случайно не закоммитить мастер-пароль в репозиторий:

      echo '.vault_pass.txt' >> .gitignore
    
  • Добавим файл .vault_pass.txt в файл ansible.cfg, чтобы не нужно было каждый раз при запуске плейбука вводить мастер-пароль для Vault:

      echo 'vault_password_file = .vault_pass.txt' >> ansible.cfg
    
  • Разделим файл с переменными хоста (host_vars/hostname) на два файла в одноименной директории:

      mv host_vars/hostname host_vars/hostname_vars
      mkdir host_vars/hostname
      mv host_vars/hostname_vars host_vars/hostname/vars
      touch host_vars/hostname/vault
    
  • Выберем переменные для переноса в vault и перенесем их в файл host_vars/hostname/vault с префиксом vault, т.е. если переменная в файле host_vars/hostname/vars называется так: ansible_password: 123qwe, то нужно объявить в файле host_vars/hostname/vault переменную vault_ansible_password: 123qwe, а в файле host_vars/hostname/vars сослаться на переменную из host_vars/hostname/vault:

      cat host_vars/hostname/vars
      
      # --
      #
      # ansible_password: "{{ vault_ansible_password }}"
      #
      
      cat host_vars/hostname/vault
      
      # ---
      #
      # vault_ansible_password: 123qwe
      #
    
  • Шифруем файл с секретными паролями:

      ansible-vault encrypt host_vars/hostname/vault
    
  • Коммитим все изменения в ваш ansible-репозиторий:

      git add .
      git commit -m "Encrypt sensitive hostname vars with Vault"
    
  • Просмотр файла:

      ansible-vault view foo.yml
    
  • Редактирование файла:

      ansible-vault edit foo.yml
    

Ссылки:

Disable SSH Authentication (usefull for work with many unknown hosts)

Use environment variable

export ANSIBLE_HOST_KEY_CHECKING=False
ansible-playbook ...

or for one-time usage:

ANSIBLE_HOST_KEY_CHECKING=False ansible-playbook ...

Use Ansible config file

In /etc/ansible/ansible.cfg (global system level) or ~/.ansible.cfg (user level) or ./ansible.cfg (repository level) set:

[defaults]
host_key_checking = False

Update known_hosts with hosts info (do not disable host checking, actually)

- name: Write the new ec2 instance host key to known hosts
  connection: local
  shell: "ssh-keyscan -H {{ inventory_hostname }} >> ~/.ssh/known_hosts"

Ссылка: How to ignore ansible SSH authenticity checking?

Разное

Sidebar is under construction

Clone this wiki locally