Ansible: различия между версиями
Материал из Etersoft wiki
Перейти к навигацииПерейти к поиску
(никаких бэкапов) |
|||
(не показано 8 промежуточных версий 3 участников) | |||
Строка 6: | Строка 6: | ||
== Настройка == | == Настройка == | ||
=== Включить копирование файлов === | === Включить копирование файлов === | ||
Без этой опции возникали ошибки при копировании файлов. Указанная настройка полезна в целях совместимости с различными системами. | |||
<pre> | <pre> | ||
cd /etc/ansible | cd /etc/ansible | ||
Строка 17: | Строка 20: | ||
=== Указать список машин === | === Указать список машин === | ||
Видимо, в /etc/ansible/hosts | |||
<pre> | <pre> | ||
[ | [servers] | ||
server1 | |||
server2 | |||
server3 | |||
[clients] | [clients] | ||
user1 | |||
user2 | |||
[test] | [test] | ||
testcpu | |||
</pre> | </pre> | ||
== Запуск == | == Запуск == | ||
* Посмотреть доступную память | * Посмотреть доступную память | ||
ansible | 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' | ||
=== Пример вывода === | === Пример вывода === | ||
Вывод "цветастый": зеленый в случае успеха (exit 0), красный - в других случаях. | |||
<pre> | <pre> | ||
Строка 86: | Строка 67: | ||
</pre> | </pre> | ||
=== Задача установки пакетов === | |||
В нашем случае использование 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, а в случае его отсутствия или незадания - добавляется в конец файла. | |||
== Ссылки == | == Ссылки == | ||
* [http://bugs.etersoft.ru/show_bug.cgi?id=10697] | * [http://bugs.etersoft.ru/show_bug.cgi?id=10697] |
Текущая версия на 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, а в случае его отсутствия или незадания - добавляется в конец файла.