Ievgen
deploy_helper модуль
за этот хелпер отдельное спасибо
Денис
Всем привет! Хочу разделить имя файла без разширения из src unarchive. unarchive: > src={{ kafka_tgz_url }} dest={{ kafka.dirs.root }} creates={{ kafka.dirs.root }}/{{ kafka_name }} remote_src=yes register: kafka_archive - debug: msg={{kafka_archive.src | basename | splitext }} Встретил в документации фильтр splitext, но он чего-то не работает.. # with path == 'nginx.conf' the return would be ('nginx', '.conf') {{ path | splitext }} Подскажите, что не так
Aleksey
кто нить умеет переводить все коммиты в доку ?
Денис
Подскажите, пожалуйста, где можно прочитать про порядок выполнения задач в роли. Ведь таски выполняются не последовательно?
Nklya
tasks/main.yml и дальше по списку
Денис
это понятно. Т.е. всегда линийно?
Ivan
Если нет async, то по порядку
Денис
Во это оно.. Наверное это сбило с толку. Спасибо! Сейчас почитаю
Dmitrii
Если ты еще тут и нужна помощь то могу помочь
Dmitrii
Я этот ебучий ec2.py весь и так и сяк прогрыз и даже патчил, скреплял со статическиминвентори и так далее...
Nklya
Вопрос был про модуль для ес2 инвентори, который встроенный появился в 2.5
Dmitrii
А, пропустил. Тачняк
Dmitrii
Пагадите. Но нахуя он нужен ваще?
Dmitrii
Глянул щас быстренько
Nklya
We are also introducing a new EC2 dynamic inventory plugin These inventory plugins have the ability to utilize the newly released Ansible inventory plugin system.
Alex
Добрый день! Может кто-то подсказать, как в таком выражении сделать, чтобы переменная получилась в одинарных кавычках? line: "{{ ' IP ' + master_ip }}" на выходе хочется увидеть: IP '127.0.0.1' пробовал всяко экранировать, но кавычки исчезают и пишется имя переменной, вместо самой переменной
I
quote или унести ' за фигурные скобки
Alex
спасибо! второй способ зашел на ура, что-то сразу было не очевидно.
Anonymous
Два раза ' ' текст ' ' одинарные кавычки писать по два раза
Stas
ребят как можно такую копипасту окультурить - hosts: srv2 tasks: - name: Comment out lines replace: dest: /..../2/has_server.conf regexp: '^{{ item }}' replace: '#{{ item }}' with_items: - "произвольнаястрока1" - "произвольнаястрока2" - name: Add new connection strings blockinfile: path: /..../2/has_server.conf insertafter: "#произвольнаястрока2" state: present block: | другаяпроизвольнаястрока другаяпроизвольнаястрока2 - hosts: srv3 tasks: - name: Comment out lines replace: dest: /..../1/has_server.conf regexp: '^{{ item }}' replace: '#{{ item }}' with_items: - "произвольнаястрока1" - "произвольнаястрока2" - name: Add new connection strings blockinfile: path: /..../1/has_server.conf insertafter: "#произвольнаястрока2" state: present block: | другаяпроизвольнаястрока1 другаяпроизвольнаястрока2
Stas
тоесть 2 одинаковых действия но на разных машинах в разных директориях
Stas
нужно найти 2 строки, закоментить их
Stas
и ниже добавить другие
Stas
на двух виртуалках, пути к файлам на виртуалках отличаются
Stas
строки тоже
k
ребят как можно такую копипасту окультурить - hosts: srv2 tasks: - name: Comment out lines replace: dest: /..../2/has_server.conf regexp: '^{{ item }}' replace: '#{{ item }}' with_items: - "произвольнаястрока1" - "произвольнаястрока2" - name: Add new connection strings blockinfile: path: /..../2/has_server.conf insertafter: "#произвольнаястрока2" state: present block: | другаяпроизвольнаястрока другаяпроизвольнаястрока2 - hosts: srv3 tasks: - name: Comment out lines replace: dest: /..../1/has_server.conf regexp: '^{{ item }}' replace: '#{{ item }}' with_items: - "произвольнаястрока1" - "произвольнаястрока2" - name: Add new connection strings blockinfile: path: /..../1/has_server.conf insertafter: "#произвольнаястрока2" state: present block: | другаяпроизвольнаястрока1 другаяпроизвольнаястрока2
Сделай роль/вынеси в отдельную таску, а путь и строки параметризуй Соответственно, вызывай с разными значениями Вся "низкоуровневая" логика будет скрыта Главное потом не забыть как оно внутри работает ;)
Alexander
А какая переменная будет "выше": Тоесть если у меня в роли обьявлен в vars файле переменная, и с таким же именем я extra-vars при старте даю, то какое значение будет у переменной в итоге?
Vadim
https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html#variable-precedence-where-should-i-put-a-variable
Blue_Wolf
I Know this Ansible Channel, But Is there are any "Puppet" supporter :)
Bogdan (SirEdvin)
Мда, какая-то черная магия. Может кто-то сталкивался с тем, что ansible может выдавать такой миленький json в виде ошибки, во время сбора фактов? fatal: [server_name]: FAILED! => { "changed": false, "cmd": "None -s system-product-name", "invocation": { "module_args": { "fact_path": "/etc/ansible/facts.d", "filter": "*", "gather_subset": [ "all" ], "gather_timeout": 10 } }, "msg": "[Errno 2] No such file or directory", "rc": 2 }
Даня
кто-нибудь может подсказать, как сделать loop с условием? with_items: - { item: "{{ backup_profiles }}" } - { item: "{{ restore_profiles }}", when: db_stage_restore } пробую так - бьет синтакс ошибку
Bogdan (SirEdvin)
Можно кастомным фильтром)
Даня
а так, как я написал выше?
Даня
хм, сейчас попробую
Даня
{{ item: "{{ restore_profiles if db_stage_restore else omit }}" }}?
два чая этому господину :) спасибо
Даня
только там есть момент с undefined variable
Даня
сейчас разберусь уже сам
Bogdan (SirEdvin)
Мда, какая-то черная магия. Может кто-то сталкивался с тем, что ansible может выдавать такой миленький json в виде ошибки, во время сбора фактов? fatal: [server_name]: FAILED! => { "changed": false, "cmd": "None -s system-product-name", "invocation": { "module_args": { "fact_path": "/etc/ansible/facts.d", "filter": "*", "gather_subset": [ "all" ], "gather_timeout": 10 } }, "msg": "[Errno 2] No such file or directory", "rc": 2 }
Если кому-то интересно, то ребята из Hetzner или ребята из Ansible (а в целом обе команды) редкие ручкохлопы. Hetzner запилил свою систему виртуализации, которая не детектится средствами ansible, а те не могут это нормально обработать, потому что на серверах нет dmidecode.
Bogdan (SirEdvin)
Прям заходи и создавай тематический issue
Даня
{{ item: "{{ restore_profiles if db_stage_restore else omit }}" }}?
with_items: - "{{ backup_profiles }}" - "{{ restore_profiles if db_stage_refresh else backup_profiles}}" а можно ли как-то взять и попросту скипнуть ненужный словарь?
Даня
такой вариант, конечно, тоже работает и подходит, но как-то нехорошо получается
Daniyar
всем привет
Leonid
Ребят, кто-нибудь автоматизировал установку ОС на хост в vSphere? Поделитесь опытом) Хочется с помощью Ansible создавать хост, стартовать и автоматом накатывать ось... У меня пока только мысли насчет cobbler сервера...
Daniyar
есть задача, есть инвентори с хостами, нужно на nginx добавить циклом апстримы из инвентори, сделал так, но так нихрена неправильно server {{ hostvars[groups['servers'][0]]['ansible_host'] }}:{{ api_port }} max_fails=3;
Daniyar
ведь количество хостов может поменяться, а за эти следить желания нет
Leonid
совсем нет
Да, это что-то совсем не то))
Даня
omit
не работает таким образом. ругается на отсутствие переменной: "The task includes an option with an undefined variable. The error was: 'ansible.utils.unsafe_proxy.AnsibleUnsafeText object' has no attribute 'name'
Даня
я сделал с пустым словарем и такой вариант подошел
Даня
а там в словаре идут параметры
Даня
вот такого формата
Даня
- name: etc purge_schedule: 0 3 * * * # At 3am every day backup_schedule: 30 3 * * * # At 3am every day source: /etc target: "{{ s3_bucket_link }}/{{ backup_hostname }}/files/etc"
Vadim
Нутк omit полностью пропустит этот item. Нужно default совать
Даня
- "{{ restore_profiles if db_stage_refresh else empty_profiles }}" сделал так, где empty_profiles: []
Leonid
Модуль http://docs.ansible.com/ansible/latest/modules/vmware_guest_module.html Стоит только учитывать что модули для вмвари могут реализовывать не весь функционал.
Про модуль то уже почитал, конечно. Но там описана установка ОСи с iso образа. А хочется полностью автоматизировать. От создания гостевой, до запуска ОСи
Leonid
Я пока вижу только связку VSphere + Cobbler (rhel) будет.
Nklya
Nklya
Зачем коблер, зачем исо? Он умеет из шаблона поднимать инстанс.
Leonid
Ну что сразу)) Расскажи поподробней пожалуйста) Я в vSphere никогда глубоко не копался...
Leonid
Уже доку прочитал)
Aleksey
в ансибл тайсктаймаут так и не завезли да ?
Ivan
Что-то про тайм-аут видел в исходниках, могу посмотреть, что это было
Ievgen
Парни, а кто то заморачивался lookup в lookup делать? Ну или конкретно мне надо получить контент и нарисовать его как шаблон, есть lookup('url') и lookup('template') но второй сцуко таботает только с локальным файлом, может я конечно странного хочу, но тем не менее...
Sergey
попробуй модуль copy с указанием вместо src параметра content, равного чему-нить типа "{{ variable }}"
Ievgen
мм, я не копирую, сам файл шаблона не находится на оркестраторе
Ievgen
ну или я тебя не понял
Ievgen
мм вижу директиву content в copy
Ievgen
вот если бы такую же в template
Ievgen
например
Ievgen
но это все равно немного не решает
Ievgen
потому что lookup(url, 'http://чтото/файл') я делаю в body модуля uri