Size: a a a

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

2018 January 10

S

Slach in ansible — русскоговорящее сообщество
Dmitriy S.
Есть вот такая структура:
clusters:
 - name: one
   nodes:
     - name: node1
       id: 01
     - name: node2
       id: 02
     - name: node3
       id: 03
     - name: node4
       id: 04

Как реализовать задачу выводящую вот такую строку?
one: node1(01) node2(02) node3(03) node4(04)
структура в vars файле?

сделай task который через шаблон формирует файл
дальше в шаблоне
{% for cluster in clusters %}{% for node in nodes %}{{node.name}}( {{node.id}} ){% endfor %}{%endfor%}

синтаксис точно шаблонов не помню, это jinja2
http://docs.ansible.com/ansible/latest/template_module.html
источник

DS

Dmitriy S. in ansible — русскоговорящее сообщество
Slach
структура в vars файле?

сделай task который через шаблон формирует файл
дальше в шаблоне
{% for cluster in clusters %}{% for node in nodes %}{{node.name}}( {{node.id}} ){% endfor %}{%endfor%}

синтаксис точно шаблонов не помню, это jinja2
http://docs.ansible.com/ansible/latest/template_module.html
1. Да, это структура в var-файле!
2. А как этот код из шаблона после всего передать в shell?
Что-то типа:
- name execute a command
 shell: ......
источник

DS

Dmitriy S. in ansible — русскоговорящее сообщество
До сего момента я просто использовал template только для парсинга файлов
источник

S

Slach in ansible — русскоговорящее сообщество
ну как то так $(cat output_templated_file)
источник

S

Slach in ansible — русскоговорящее сообщество
внутри shell
источник

S

Slach in ansible — русскоговорящее сообщество
код из шаблона исполнится и результат будет записан в файл
который вы для таски в модуле template конфигурите
источник

DS

Dmitriy S. in ansible — русскоговорящее сообщество
Dmitriy S.
Есть вот такая структура:
clusters:
 - name: one
   nodes:
     - name: node1
       id: 01
     - name: node2
       id: 02
     - name: node3
       id: 03
     - name: node4
       id: 04

Как реализовать задачу выводящую вот такую строку?
one: node1(01) node2(02) node3(03) node4(04)
- name: cluster - list
 debug:
   msg: "cluster {{ item.name }} has next list of nodes: {{ item.nodes | json_query(qry) | join(' ') }}"
 with_items:
   - "{{ clusters }}"
 when:
   - clusters is defined
 vars:
   qry: "[].{res: join(':',[hostname,path])} | [].res"
источник
2018 January 11

AK

Andrew Krw. in ansible — русскоговорящее сообщество
спасибо
источник

NK

ID:448411134 in ansible — русскоговорящее сообщество
Подскажие пожалуйста как реализовать функцию, типа:
если dbtype=pg, то выполнить это действие, а если dbtype=mysql, то выполнить эти действия.
источник

AK

Andrew Krw. in ansible — русскоговорящее сообщество
when
источник

AK

Andrew Krw. in ansible — русскоговорящее сообщество
источник

AK

Andrew Krw. in ansible — русскоговорящее сообщество
tasks:
 - name: "msg pg"
   shell: "echo pg"
   when: my_variable == "pg"
 - name: "msg mysql"
   shell: "echo mysql"
   when: my_variable == "mysql"
источник

AK

Andrew Krw. in ansible — русскоговорящее сообщество
чему будет равна переменная то и выполнится
источник

AK

Andrew Krw. in ansible — русскоговорящее сообщество
на старых версиях ансибла это вызывало ошибку
поэтому приходилось ставить параметр ignore_errors
источник

NK

ID:448411134 in ansible — русскоговорящее сообщество
Я понял, а если у меня переменная там:

tasks:
 - name: "msg pg"
   shell: "echo pg"
   when: my_variable == "{{ item.dbtype }}"
 - name: "msg mysql"
   shell: "echo mysql"
   when: my_variable == "{{ item.dbtype }}"


Верно?
источник

NK

ID:448411134 in ansible — русскоговорящее сообщество
А, дошло. Спасибо!
источник
2018 January 14

SM

Serg Martynov in ansible — русскоговорящее сообщество
может кто-нибудь подсказать. Есть переменная в плейбуке, которая является ссылкой на deb пакет, но когда я указываю ее в apt: deb={{var}} то ansible пытается искать в локальной директории.
источник

NK

ID:294130032 in ansible — русскоговорящее сообщество
/report
источник

NK

ID:294130032 in ansible — русскоговорящее сообщество
Serg Martynov
может кто-нибудь подсказать. Есть переменная в плейбуке, которая является ссылкой на deb пакет, но когда я указываю ее в apt: deb={{var}} то ansible пытается искать в локальной директории.
Ну, так там и должен быть путь к папке.
   
Path to a .deb package on the remote machine.
If :// in the path, ansible will attempt to download deb before installing. (Version added 2.1)

А какой нужен результат?
источник
2018 January 16

NK

ID:448411134 in ansible — русскоговорящее сообщество
Не подскажите как использовать виртуальную среду в ansible? (virtualenv)
источник