Ansible: различия между версиями
Материал из Etersoft wiki
Перейти к навигацииПерейти к поиску
м (→Запуск) |
(никаких бэкапов) |
||
(не показана 1 промежуточная версия 1 участника) | |||
Строка 42: | Строка 42: | ||
* Посмотреть доступную память | * Посмотреть доступную память | ||
ansible servers -m shell -a 'sudo dmidecode --type memory | egrep "(Size:*|Type: DDR*)" | egrep -v "(Installed S |Enabled|Not I)" | sort | uniq -c' | ansible servers -m shell -a 'sudo dmidecode --type memory | egrep "(Size:*|Type: DDR*)" | egrep -v "(Installed S |Enabled|Not I)" | sort | uniq -c' | ||
* Альтернативный вариант, используя модуль setup: | |||
ansible -m setup -a 'filter=ansible_memtotal_mb' all: | |||
* Установить nano | * Установить nano | ||
ansible test -m shell -a 'sudo epmu; sudo epmi nano' | ansible test -m shell -a 'sudo epmu; sudo epmi nano' | ||
Строка 75: | Строка 79: | ||
Используется модуль lineinfile, целевой файл задается параметром dest: | Используется модуль lineinfile, целевой файл задается параметром dest: | ||
ansible testgroup -m lineinfile -a " | ansible testgroup -m lineinfile -a "dest=/tmp/testfile regexp='^PARAM=' line='PARAM=hohoho' " | ||
Особенности применения команды: | Особенности применения команды: | ||
* файл должен существовать, иначе - ошибка, иначе следует добавить 'create=yes owner=anton group=users mode=0600'; | * файл должен существовать, иначе - ошибка, иначе следует добавить, например, 'create=yes owner=anton group=users mode=0600'; | ||
* каталог с dest-файлом должен быть доступен на запись даже, если бекап не делается (по умолчанию, он не делается); | * каталог с dest-файлом должен быть доступен на запись даже, если бекап не делается (по умолчанию, он не делается); | ||
* бекапный файл имеет вид: testfile.2016-02-16@16:55:14~ | * бекапный файл имеет вид: testfile.2016-02-16@16:55:14~ |
Текущая версия на 03:02, 6 августа 2017
Ansible — yet another система управления конфигурациями.
Установка
epmi ansible ansible-shell
Настройка
Включить копирование файлов
Без этой опции возникали ошибки при копировании файлов. Указанная настройка полезна в целях совместимости с различными системами.
cd /etc/ansible diff ansible.cfg ansible.cfg.rpmnew 209c209 < scp_if_ssh = True --- > #scp_if_ssh = True
Указать список машин
Видимо, в /etc/ansible/hosts
[servers] server1 server2 server3 [clients] user1 user2 [test] testcpu
Запуск
- Посмотреть доступную память
ansible servers -m shell -a 'sudo dmidecode --type memory | egrep "(Size:*|Type: DDR*)" | egrep -v "(Installed S |Enabled|Not I)" | sort | uniq -c'
- Альтернативный вариант, используя модуль setup:
ansible -m setup -a 'filter=ansible_memtotal_mb' all:
- Установить nano
ansible test -m shell -a 'sudo epmu; sudo epmi nano'
Пример вывода
Вывод "цветастый": зеленый в случае успеха (exit 0), красный - в других случаях.
ansible pc -m shell -a 'sudo dmidecode --type memory | egrep "(Size:*|Type: DDR*)" | egrep -v "(Installed S |Enabled|Not I)" | sort | atlant | success | rc=0 >> 2 Installed Size: 512 MB (Double-bank Connection) 1 Maximum Memory Module Size: 1024 MB 1 Maximum Total Memory Size: 2048 MB 2 Size: 512 MB buh | FAILED => SSH Error: ssh: connect to host buh port 22: No route to host while connecting to 192.168.0.49:22 It is sometimes useful to re-run the command using -vvvv, which prints SSH debug output to help diagnose the issue.
Задача установки пакетов
В нашем случае использование epm предпочтительно:
# ansible test -m shell -a 'epm Install vim'
В Ansible 2.0+ есть простой модуль package (позволяет поставить пакет и выбрать систему AUTO/apt/yum/...), но в AltLinux p7 версия 1.9.2 - тут такой модуль отсутствует.
Задача внесения правки в какой-либо конфиг
Используется модуль lineinfile, целевой файл задается параметром dest:
ansible testgroup -m lineinfile -a "dest=/tmp/testfile regexp='^PARAM=' line='PARAM=hohoho' "
Особенности применения команды:
- файл должен существовать, иначе - ошибка, иначе следует добавить, например, 'create=yes owner=anton group=users mode=0600';
- каталог с dest-файлом должен быть доступен на запись даже, если бекап не делается (по умолчанию, он не делается);
- бекапный файл имеет вид: testfile.2016-02-16@16:55:14~
- если строка в конфиге именно такая, какую мы хотим вписать, то результат операции - success, но изменений файла нет (указывается в выводе-отчете) и его бекап не делается;
- исправление вносится только в последнее вхождение regexp, а в случае его отсутствия или незадания - добавляется в конец файла.