Size: a a a

ansible — русскоговорящее сообщество

2020 December 08

AS

Anton Sergievich in ansible — русскоговорящее сообщество
hostvars[inventory_hostname].groups
источник

F

Fess in ansible — русскоговорящее сообщество
Всем привет! Коллеги, подскажите, что-то туплю:

{% for host in groups['appservers'] %}
   {{hostvars[host]['ansible_host']}}
{% endfor %}

Вот таким образом берутся ansible_host из группы appservers

А как сделать, чтобы из всего inventory абсолютно все ansible_hosts выбрать?
источник

IP

Iliya Pisany - DBA !... in ansible — русскоговорящее сообщество
Anton Sergievich
hostvars[inventory_hostname].groups
И как мне оперировать группами? Добавлять условия, которые отсеют конкретную группу не вариант. Тогда лучше запускать не на all а на конкретных группах.

Мб неправльно поняли, один хост принадлежит нескольким группам. Каждая группа как всегда состоит из нескольких хостов. При дублировании ноды в группе его hostname разный (т.е. хост приналежит группе a под именем a1 и группе b под именем b4).

Не понимаю как для решения данной проблемы можно использовать список групп конкретного хоста
источник

AS

Anton Sergievich in ansible — русскоговорящее сообщество
Iliya Pisany - DBA !GUY
И как мне оперировать группами? Добавлять условия, которые отсеют конкретную группу не вариант. Тогда лучше запускать не на all а на конкретных группах.

Мб неправльно поняли, один хост принадлежит нескольким группам. Каждая группа как всегда состоит из нескольких хостов. При дублировании ноды в группе его hostname разный (т.е. хост приналежит группе a под именем a1 и группе b под именем b4).

Не понимаю как для решения данной проблемы можно использовать список групп конкретного хоста
тогда смотреть, может получится выборку сделать по айпишнику принадлежности к группам и на этом основании делать цикл того какие пакеты ставить. например для группы b будет список b_apts и его и будем ставить, или объединять списки.
источник

AS

Anton Sergievich in ansible — русскоговорящее сообщество
просто у меня хосты были определены как айпишники и к ним привязаны разные группы
источник

IP

Iliya Pisany - DBA !... in ansible — русскоговорящее сообщество
Anton Sergievich
просто у меня хосты были определены как айпишники и к ним привязаны разные группы
Т.е. сначала определяется список хостов а потом для каждого хоста указываются группы? Не видел такого в доке inventory, только группы которым принадлежат хосты( Но что-то подсказывает, что будет то же самое. Попробую потыкать так.
источник

AS

Anton Sergievich in ansible — русскоговорящее сообщество
Fess
Всем привет! Коллеги, подскажите, что-то туплю:

{% for host in groups['appservers'] %}
   {{hostvars[host]['ansible_host']}}
{% endfor %}

Вот таким образом берутся ansible_host из группы appservers

А как сделать, чтобы из всего inventory абсолютно все ansible_hosts выбрать?
все хосты инвентаря обычно принадлежат группе all может по ней выбирать?
источник

F

Fess in ansible — русскоговорящее сообщество
Anton Sergievich
все хосты инвентаря обычно принадлежат группе all может по ней выбирать?
Спасибо, попробуй сейчас
источник
2020 December 09

M

Mikhail in ansible — русскоговорящее сообщество
Iliya Pisany - DBA !GUY
И как мне оперировать группами? Добавлять условия, которые отсеют конкретную группу не вариант. Тогда лучше запускать не на all а на конкретных группах.

Мб неправльно поняли, один хост принадлежит нескольким группам. Каждая группа как всегда состоит из нескольких хостов. При дублировании ноды в группе его hostname разный (т.е. хост приналежит группе a под именем a1 и группе b под именем b4).

Не понимаю как для решения данной проблемы можно использовать список групп конкретного хоста
А зачем один хост имеет два имени в inventory? Мне кажется корень проблемы в этом.
Одно имя одного хоста, во всех тех группах в которых надо.

Ну или в лоб, добавлять параметр retry
https://stackoverflow.com/a/44135131/205355
- command: /usr/bin/false
 retries: 3
 delay: 3
 register: result
 until: result.rc == 0
источник
2020 December 11

IP

Iliya Pisany - DBA !... in ansible — русскоговорящее сообщество
Mikhail
А зачем один хост имеет два имени в inventory? Мне кажется корень проблемы в этом.
Одно имя одного хоста, во всех тех группах в которых надо.

Ну или в лоб, добавлять параметр retry
https://stackoverflow.com/a/44135131/205355
- command: /usr/bin/false
 retries: 3
 delay: 3
 register: result
 until: result.rc == 0
Справедливое замечание. Именуя все хосты с одинм адресом одинаково получилось выполнять действия только один раз на каждом хосте. Спасибо)
источник
2020 December 14

M

Maksim Sharov in ansible — русскоговорящее сообщество
почему output команды дает разный резльтат в ансибл и на устройстве. работаю с mikrotik

нативная команда
[ci_bot@mkrt] /ip firewall nat> :put [/ip dhcp-server lease get [find host-name="gate"] active-address]
192.168.88.80


плейбук
- name: show gate lease
 routeros_command:
   commands: :put [/ip dhcp-server lease get [find host-name="gate"] active-address]
 register: gate

- name: gate address
 debug:
   var: gate.stdout_lines


консоль

TASK [dhcp : gate address] *****************************************************
ok: [mikrotik] => {
   "gate.stdout_lines": [
       [
           ":put [/ip dhcp-server lease get [find host-name=\"gate\"] active-",
           "<ase get [find host-name=\"gate\"] active-a                                      ",
           "<ase get [find host-name=\"gate\"] active-address]",
           "<ase get [find host-name=\"gate\"] active-address]",
           "",
           "192.168.88.80"
       ]
   ]
}
источник

NS

Nikita Shinkevich in ansible — русскоговорящее сообщество
Sergey Kargapoltsev
не, все тривиально. Руками я это сделать могу, а вот через плейбук пришлось покопаться. Все равно выгружаю публичный ключ в файл и считываю на клиенте
не могли бы по делиться модулем для ssh-copy-id или ссылкой на почитать как сделать красиво
источник

SK

Sergey Kargapoltsev in ansible — русскоговорящее сообщество
Nikita Shinkevich
не могли бы по делиться модулем для ssh-copy-id или ссылкой на почитать как сделать красиво
момент
источник

SK

Sergey Kargapoltsev in ansible — русскоговорящее сообщество
Nikita Shinkevich
не могли бы по делиться модулем для ssh-copy-id или ссылкой на почитать как сделать красиво
источник

NS

Nikita Shinkevich in ansible — русскоговорящее сообщество
я так понимаю в playbook не заворачивали ?
источник

NS

Nikita Shinkevich in ansible — русскоговорящее сообщество
только bash (
источник

ВШ

Вадим Шандринов... in ansible — русскоговорящее сообщество
Вадим Шандринов
Хорошо, приведу типичный пример. Мы хотим раскатывать на все прод ЦОДы ветку мастер, а на бету - девелоп.
Есть папки инвентори для каждого ЦОД и одна папка - для беты.
── inventories
│   ├── beta
│   │   ├── group_vars
│   │   │   ├── all.yml
│   │   └── hosts
│   ├── data_center1
│   │   ├── group_vars
│   │   │   ├── all.yml
│   │   └── hosts
│   ├── data_center2
│   │   ├── group_vars
│   │   │   ├── all.yml
│   │   └── hosts
Как вы решите такую задачу? цодов может быть десятки
Нашли решение. Групвар all для плейбука идет с меньшим приоритетом, чем конкретные группы в инвентори.
поэтому вот такая структура нам подходит

├── inventories
│   ├── datacenter1
│   │   ├── group_vars
│   │   │   └── group1.yml
│   │   └── hosts
│   └── datacenter1
│       ├── group_vars
│       │   └── group1.yml
│       └── hosts
├── playbooks
│   ├── all.yml
│   ├── debug.yml
│   ├── group_vars
│   │   └── all.yml
└── roles
   ├── debug
   │   ├── defaults
   │   │   └── main.yml
   │   └── tasks
   │       └── main.yml
дефолты для всех ЦОД кладем в  playbooks/group_vars/all.yml а переопределяем в inventories/group_vars/group1.yml
inventories/group_vars/group2.yml и так далее
источник
2020 December 15

С

Сергей in ansible — русскоговорящее сообщество
Привет все. Кто-то делал установку php с выбором версии? 5 или 7
Уже всю голову сломал, как это сделать. Получается либо 5-ю или 7-ю.
источник
2020 December 16

M

Maksim Sharov in ansible — русскоговорящее сообщество
как организовать inventory в случае, если один из хостов принадлежит двум группам? на раннем этапе пайплайна он доступен через внешний ip, чуть позже - сам становится контроллером в скрытой подсети (доступ в внешний мир имеет только он - gate), устанавливает зависимости для себя и машин в подсети.

inventory.yml
infra:
 hosts:
   # external-ip
   gate:
nodes:
 hosts:
   # localhost
   gate:
   slave-1:
   storage-1:

так возможно или как лучше организовать? и как будет выглядеть запуск плейбуков?

почему хочу переместить ансибл внутрь подсети на gate - чтобы решить проблемы доступа с ресурсам группы nodes
источник

M

Mikhail in ansible — русскоговорящее сообщество
Сергей
Привет все. Кто-то делал установку php с выбором версии? 5 или 7
Уже всю голову сломал, как это сделать. Получается либо 5-ю или 7-ю.
Я в centos 7 ставю несколько версий php (из scl и remi)
И разным сайтам разные версии подключаю в конфиге веб сервера.
источник