Денис
Всем привет! Хочу разделить имя файла без разширения из 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
Если ты еще тут и нужна помощь то могу помочь
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
Alexander
А какая переменная будет "выше": Тоесть если у меня в роли обьявлен в vars файле переменная, и с таким же именем я extra-vars при старте даю, то какое значение будет у переменной в итоге?
Vadim
Vadim
https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html#variable-precedence-where-should-i-put-a-variable
Alexander
Stas
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)
Можно кастомным фильтром)
Даня
а так, как я написал выше?
Vadim
Даня
хм, сейчас попробую
Даня
Даня
только там есть момент с 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
Даня
такой вариант, конечно, тоже работает и подходит, но как-то нехорошо получается
Daniyar
всем привет
Vadim
Leonid
Ребят, кто-нибудь автоматизировал установку ОС на хост в vSphere? Поделитесь опытом)
Хочется с помощью Ansible создавать хост, стартовать и автоматом накатывать ось...
У меня пока только мысли насчет cobbler сервера...
Daniyar
есть задача, есть инвентори с хостами, нужно на nginx добавить циклом апстримы из инвентори, сделал так, но так нихрена неправильно server {{ hostvars[groups['servers'][0]]['ansible_host'] }}:{{ api_port }} max_fails=3;
Sergey
Daniyar
ведь количество хостов может поменяться, а за эти следить желания нет
Aleksey
Даня
omit
не работает таким образом. ругается на отсутствие переменной:
"The task includes an option with an undefined variable. The error was: 'ansible.utils.unsafe_proxy.AnsibleUnsafeText object' has no attribute 'name'
Даня
я сделал с пустым словарем и такой вариант подошел
Vadim
Даня
а там в словаре идут параметры
Даня
вот такого формата
Даня
- 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: []
Nklya
Leonid
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