Изучаем Ansible


Установка последней версии в Ubuntu 16.04


sudo apt update
sudo apt install software-properties-common
sudo apt-add-repository --yes --update ppa:ansible/ansible
sudo apt install ansible

Баги/Проблемы

№ 1

У ansible есть интересная особенность, о которой не нужно сильно задумываться, чтобы не погружаться в дивный мир ssh и сокетов. Просто делай mkdir ~/.ssh/master если ансибл говорит что-то вроде


TASK [setup] *******************************************************************
fatal: [qa01]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: muxserver_listen bind(): No such file or directory\r\n", "unreachable": true}
fatal: [qa02]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: muxserver_listen bind(): No such file or directory\r\n", "unreachable": true}

Но если всё же станет интересно, то почитай про мультиплексинг в openssh.

№ 2

При раскатке yaml конфига, если длина строки больше 80 симолов, джинджа разбивает строку по пробельно. В принципе на это не стоит обращать внимание т.к. не влияет на работоспособность конфига, но если сильно хочиться то можно ее изменить


{\{ project_config | to_nice_yaml(width=255) }}

Пример до:


-            note: fonmix:player:monitoring:[Filial key . Filial system_key] -> { json monitoring }
+            note: fonmix:player:monitoring:[Filial key . Filial system_key] -> { json
+                monitoring }

После:


note: fonmix:player:monitoring:[Filial key . Filial system_key] -> { json monitoring }

№3

Если при соединении ansible -m ping all -i host вылетает /usr/bin/python: not found, то

Создаем файл bootstrap.yml


$ cat bootstrap.yml
- hosts: all
  gather_facts: False
  
  tasks:
  - name: install python 2
    raw: test -e /usr/bin/python || (apt -y update && apt install -y python-minimal)
    become: yes
    become_method: sudo

И запускаем playbook


ansible-playbook -i host bootstrap.yml

Управление VDS codeanywere

Для начала работы нужно установить ssh соединение с контейнером. см - SSH

Создаем файл с инфой о подключении контейнера


$ cat host 
[cabox]
host16.codeanyhost.com ansible_port=48582 ansible_user=cabox

Пробуем ping


ansible -m ping all -i host
...
host16.codeanyhost.com | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}