Ansible: различия между версиями
Материал из noname.com.ua
Перейти к навигацииПерейти к поискуSirmax (обсуждение | вклад) (→3) |
Sirmax (обсуждение | вклад) |
||
| (не показаны 4 промежуточные версии этого же участника) | |||
| Строка 46: | Строка 46: | ||
</PRE> |
</PRE> |
||
| + | =Запуск команд= |
||
| − | =33= |
||
<PRE> |
<PRE> |
||
ansible -i ./inventory-eu-lon-staging2.ini 'ctl:mos-ctl-*' -a 'cat /etc/sysctl.d/999-udp_sockets.conf' |
ansible -i ./inventory-eu-lon-staging2.ini 'ctl:mos-ctl-*' -a 'cat /etc/sysctl.d/999-udp_sockets.conf' |
||
| + | </PRE> |
||
| + | Лучше использовать модуль <code> -m shell </code> для команд со звездочкой |
||
| + | <PRE> |
||
| + | ansible --inventory ./dc1.ini '*' -m shell -a 'cat /sys/class/nvme/nvme*/ctrl_loss_tmo' --become |
||
| + | </PRE> |
||
| + | * <code>--become</code> <code>-b</code> - стать рутом |
||
| + | |||
| + | =Применить <code>playbook</code>= |
||
| + | * --check --diff - проверить перед выполеннием |
||
| + | <PRE> |
||
| + | ansible-playbook --inventory ./inventory-mosk.ini -l 'stacklight-*' pull-images.yaml --check --diff |
||
| + | </PRE> |
||
| + | Для группы нод из инвентори <code>mgr</code> |
||
| + | <PRE> |
||
| + | ansible-playbook --inventory ./inventory-mosk.ini -l 'mgr' pull-images.yaml --check --diff |
||
| + | </PRE> |
||
| + | инвентори |
||
| + | <PRE> |
||
| + | [mgr] |
||
| + | k8s-control-1 kaas_name="k8s-control-1" profile="k8s-control-1" ansible_host="10.80.3.11" |
||
| + | k8s-control-2 kaas_name="k8s-control-2" profile="k8s-control-2" ansible_host="10.80.3.12" |
||
| + | k8s-control-3 kaas_name="k8s-control-3" profile="k8s-control-3" ansible_host="10.80.3.13" |
||
| + | [mon] |
||
| + | stacklight-1 kaas_name="stacklight-1" profile="stacklight-1" ansible_host="10.80.3.41" |
||
| + | stacklight-2 kaas_name="stacklight-2" profile="stacklight-2" ansible_host="10.80.3.42" |
||
| + | stacklight-3 kaas_name="stacklight-3" profile="stacklight-3" ansible_host="10.80.3.43" |
||
| + | </PRE> |
||
| + | Применить фактически |
||
| + | <PRE> |
||
| + | ansible-playbook --inventory ./inventory-mosk.ini -l 'mgr' pull-images.yaml |
||
</PRE> |
</PRE> |
||
| − | = |
+ | =TODO= |
495 2025-10-01 16:46:32: time ansible --inventory ./inventory-eu-lon-pc2.ini all -l 'cmp-z01r21b07-*' -m reboot -b |
495 2025-10-01 16:46:32: time ansible --inventory ./inventory-eu-lon-pc2.ini all -l 'cmp-z01r21b07-*' -m reboot -b |
||
Текущая версия на 14:57, 24 октября 2025
Ansible
Я не часто пользуюсь ansible и это склерозник что б не гуглить каждый раз
Установка
Предварительно apt install python3.10-venv
python3 -m venv ans source ans/bin/activate pip install ansible
Инвентарь
Пример
[master] master-0 kaas_name="kaas-node-0e8149aa-5032-4fe3-8ec5-de661acdccc4" profile="unspecified" ansible_host="10.15.20.65" master-1 kaas_name="kaas-node-3a0c6ddc-4fc1-4f7a-b103-517b2b3a23dc" profile="unspecified" ansible_host="10.15.20.66" master-2 kaas_name="kaas-node-7eed0dad-3f08-4040-879c-dc33c155ba2a" profile="unspecified" ansible_host="10.15.20.67"
[master]— имя группы хостов. Используется вhosts:плейбука и дляgroup_vars/master.yml.master-0 / master-1 / master-2— inventory_hostname (логическое имя хоста в инвентаре). По нему вы адресуетесь к хосту в паттернах (-l master-0) и в hostvars.ansible_host="10.15.20.X"— адрес/имя, по которому Ansible реально подключается (SSH). Если не задан, Ansible попробует подключаться к inventory_hostname.kaas_name="..."— произвольная переменная хоста. Не встроенная; задаётся вами и доступна в задачах как {{ kaas_name }}.profile="unspecified"— тоже произвольная переменная хоста, доступна как {{ profile }}.
ping
ansible --inventory ./inventory-eu-lon-pc8.ini ctl -l 'ctl-*' -m ping
--inventory ./inventory-eu-lon-pc8.iniфайл инвентаряctlгруппа нод описанная в файле (допустимоall)-l 'ctl-*'Маска для выбора нод-m pingМодуль, в примере - ping
Пример результата
ctl-z02r02b08-08 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}
Запуск команд
ansible -i ./inventory-eu-lon-staging2.ini 'ctl:mos-ctl-*' -a 'cat /etc/sysctl.d/999-udp_sockets.conf'
Лучше использовать модуль -m shell для команд со звездочкой
ansible --inventory ./dc1.ini '*' -m shell -a 'cat /sys/class/nvme/nvme*/ctrl_loss_tmo' --become
--become-b- стать рутом
Применить playbook
- --check --diff - проверить перед выполеннием
ansible-playbook --inventory ./inventory-mosk.ini -l 'stacklight-*' pull-images.yaml --check --diff
Для группы нод из инвентори mgr
ansible-playbook --inventory ./inventory-mosk.ini -l 'mgr' pull-images.yaml --check --diff
инвентори
[mgr] k8s-control-1 kaas_name="k8s-control-1" profile="k8s-control-1" ansible_host="10.80.3.11" k8s-control-2 kaas_name="k8s-control-2" profile="k8s-control-2" ansible_host="10.80.3.12" k8s-control-3 kaas_name="k8s-control-3" profile="k8s-control-3" ansible_host="10.80.3.13" [mon] stacklight-1 kaas_name="stacklight-1" profile="stacklight-1" ansible_host="10.80.3.41" stacklight-2 kaas_name="stacklight-2" profile="stacklight-2" ansible_host="10.80.3.42" stacklight-3 kaas_name="stacklight-3" profile="stacklight-3" ansible_host="10.80.3.43"
Применить фактически
ansible-playbook --inventory ./inventory-mosk.ini -l 'mgr' pull-images.yaml
TODO
495 2025-10-01 16:46:32: time ansible --inventory ./inventory-eu-lon-pc2.ini all -l 'cmp-z01r21b07-*' -m reboot -b
ansible-playbook -i ./inventory-eu-lon-pc8.ini sysctl-net-params.yaml -l 'ctl-*' --list-hosts
ansible-playbook -i ./inventory-eu-lon-pc8.ini sysctl-net-params.yaml -l 'ctl-*' -C --diff
- если группа называется ровно "ctl":
ansible-playbook -i ./inventory-eu-lon-pc8.ini sysctl-net-params.yaml -l ctl -C --diff