Dmitry
или речь идет про название параметра, но не его значение
Sergey
или речь идет про название параметра, но не его значение
только названия, естественно - ну не будет у теяб в общем случае число воркеров в продакшне одинаковым со стейджем. а вот называться сам параметр должен одинаково.
Dmitry
где они хранятся?
Dmitry
Хранить отдельно, например group_vars/group/dev.yaml
но этот путь ведь все равно подвержен тем же самым движениям по веткам? Мне не хочется чтобыоно было во всех ветках
Sergey
Нет большого смысла переменные по веткам таскать.
Dmitry
хорошо, остановимся на следующей модели: roles/*, playbooks полностью переезжают по веткам. параметры окружения, инвентарь залочены в ветке (inventory/, group_vars, host_vars...)
Dmitry
так?
Sergey
да, вполне. только в этой модели описанный выше вопрос с пином версий плоховато решается.
Alexander
Как мне общий для ролей файл переменных сделать? Куда его засунуть?
Alexander
Sergey
Уф, спасибо
Только сразу предупреждаю, что это придётся это для каждого инвентори сделать.
Alexander
Ну мне пока главное, что для всех ролей сразу
Sergey
requirements.yml ведь тоже мигрируют?
эммммм........... это про что именно? зависимости ролей?
Sergey
я пин версий делал в group_vars/all/versions.yml. Тогда у тебя любая группа и любая роль знает, какая версия какого компонента должна быть.
Dmitry
Спасибо. Пойду думать мозгом
Sergey
В целом цель простая - любая ветка должна содержать всё необходимое дла того, чтобы её развернуть туда, куда твой процесс предусматривает.
Sergey
Светлых мыслей тебе 😊
Dmitry
кто-то юзает? Давно не смотрел, раньше не было назначения ролей... https://theforeman.org/plugins/foreman_ansible/2.x/index.html
Dmitry
bebebe
Foreman сам по себе достаточно тяжёл в абстракциях. Он только усложнит простой подход ансибла
bebebe
Боль переедет в другое место
Danis
Как получить списком ip адреса хостов из hosts?
bebebe
Как получить списком ip адреса хостов из hosts?
- name: parsing /etc/hosts command: awk '!/(^#|^[ ]+?$)/ {print $1}' /etc/hosts register: etc_hosts_output - name: creating list from hosts set_fact: etc_hosts: "{{ etc_hosts_output.stdout.split('\n') }}"
bebebe
странно, что в фактах такой информации нет об /etc/hosts
Danis
Из инвентори файлика
bebebe
три плети этому господину
Danis
Yes
Давно так ?
Sergey
какая прелесть
bebebe
кто-то не получит квартальную премию..
simplemice.eth
ушла эпоха ансибла
Tadeusz
лал
Sergey
гы - пиздаватизм
bebebe
Updated Date: 2017-11-16T16:12:16Z Creation Date: 1995-02-03T05:00:00Z Registry Expiry Date: 2022-02-04T05:00:00Z это видимо хостинг протух
Tadeusz
Expiry Date: 2022 же
simplemice.eth
в гугле :)
bebebe
Не вопрос, а доки то где брать ?
https://github.com/jedelman8/ansible-webdocs
Alexander
https://docs.ansible.com/
Alexander
у меня работает. основной - нет
bebebe
хехе, начал искать твиты по этому поводу, и первый что нашел от @vrutkovs 24 секунды назад 😊
Vadim
ну дык, все ж профи, в закрытых чатиках над контентменеджерами хихикать
bebebe
ну, надо сказать что какой-то индус 15 минут назад хайлайтнул @ansible в твитторе с этой проблемой https://twitter.com/sandipb/status/1037615758019162113
Yes
хехе, начал искать твиты по этому поводу, и первый что нашел от @vrutkovs 24 секунды назад 😊
Ну короче, не так давно -), а то подумал - может закрыли проект ?
cent
Так https://docs.ansible.com же работает.
bebebe
Ну короче, не так давно -), а то подумал - может закрыли проект ?
don't panic 😉 выдерни шнур, выдави стекло 😉
Stepan T.
Если кто не знает, есть ansible-doc MODULE_NAME -s
Stepan T.
На случай если https://docs.ansible.com перестанет работать
Tadeusz
We are working through the Hubspot known issue of some webpages loading. http://Ansible.com is affected and we hope it will be resolved quickly.
Alexander
Ребят, для вывода после исполнения плейбука вконце каких либо результирующих переменных есть какаятт отдельная функция или просто таск неоьхожимо писать?
Maksim
debug
Alexander
debug
Разве он для этого?
Maksim
https://docs.ansible.com/ansible/2.6/modules/debug_module.html им можно все что угодно выводить
Udjin
нужно в template подставлят не hostvars[m] - что является dict из всех возможных свойств хоста m нужно подставлять hostvars[m].inventory_hostname или где у вас там ойпишник сидит
в общем, не удалось ничего. конечный вид таски: - name: Adding target to prometheus server blockinfile: dest: "/etc/prometheus/prometheus.yml" insertafter: EOF backup: no marker: "#{{inventory_hostname}}" block: |2 - job_name: '{{inventory_hostname}}' static_configs: {%- for m in my_hosts %} - targets: ['{{ansible_ssh_host}}:9100'] {% endfor %} tags: - playhosts получаю в файлике: #secret-hostname - job_name: 'secret-hostname' static_configs: - targets: ['1.1.1.1:9100'] - targets: [''1.1.1.1:9100'] - targets: [''1.1.1.10:9100'] - targets: [''1.1.1.1:9100'] - targets: [''1.1.1.1:9100'] То есть оно зачем-то мне несколько подставляет, хотя в группе вообще 1 хост
Udjin
3 дня бьюсь уже
bebebe
не расстраивайтесь, все получится
Nklya
Берёшь шаблоны и никакого геморроя
Emil
подскажите плиз, какой аргумент прописать в when чтобы таска не запускалась, если определенная служба запущена?
Vadim
за использование blockinfile и lineinfile больше двух раз надо милицию вызывать
Nklya
Udjin
prometheus.yml https://pastebin.com/ZWRxzAEn cодержимое переменной my_hosts после запуска этого таска - https://pastebin.com/Lyy6q5SX - айпишник хоста из группы. В группе один хост. В конце хочу получить вот это: https://pastebin.com/8e1mwcJc ————————————————— Прошу прощения, но я бы решил эту задачу на руби за 3 минуты. Но просто хочу следовать канонам ансибла, и не пихать модули шелла. Это ещё хуже чем blockinfile использовать. Я не получу никакой зарплаты за это. Это задание - чисто для себя, если хотите - просто интересно, изучаю ансибл. Если вы позволите, я искренне готов отблагодарить вас за помощь как-нибудь материально, на пиво, например)
bebebe
prometheus.yml https://pastebin.com/ZWRxzAEn cодержимое переменной my_hosts после запуска этого таска - https://pastebin.com/Lyy6q5SX - айпишник хоста из группы. В группе один хост. В конце хочу получить вот это: https://pastebin.com/8e1mwcJc ————————————————— Прошу прощения, но я бы решил эту задачу на руби за 3 минуты. Но просто хочу следовать канонам ансибла, и не пихать модули шелла. Это ещё хуже чем blockinfile использовать. Я не получу никакой зарплаты за это. Это задание - чисто для себя, если хотите - просто интересно, изучаю ансибл. Если вы позволите, я искренне готов отблагодарить вас за помощь как-нибудь материально, на пиво, например)
плейбука: --- - hosts: all gather_facts: false vars: replace_to: "" tasks: - name: set set_fact: replace_to: "- targets: ['{{ item }}:9100']\n {{ replace_to }}" with_items: "{{ play_hosts | map('extract', hostvars, 'ansible_ssh_host') | list }} " delegate_to: localhost - name: debug debug: var: replace_to delegate_to: localhost - name: replace replace: path: ./source.yml regexp: "- targets:.*" replace: "{{ replace_to }}" delegate_to: localhost run_once: true инвентори: all: hosts: a: ansible_ssh_host: "1.1.1.1" b: ansible_ssh_host: "2.2.2.2" c: ansible_ssh_host: "3.3.3.3" test-group: hosts: a: b: c:
bebebe
кривовато немного, но я надеюсь никто вникать не будет и не заметит :3
Vadim
мммм, регэкспы
bebebe
на выходе получилось такое #some-domain-name - job_name: 'some-domain-name' static_configs: - target: ['1.1.1.1:9100'] - target: ['2.2.2.2:9100'] - target: ['3.3.3.3:9100']
bebebe
хотя, этот жи yaml, можно его залоадить, сделать |from_yaml, поправить структуру targets, и заново сдампить