Ansible: различия между версиями

Материал из noname.com.ua
Перейти к навигацииПерейти к поиску
 
(не показаны 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>
   
=3=
+
=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

  1. если группа называется ровно "ctl":

ansible-playbook -i ./inventory-eu-lon-pc8.ini sysctl-net-params.yaml -l ctl -C --diff