Dmitry
или речь идет про название параметра, но не его значение
Dmitry
Dmitry
где они хранятся?
Vadim
Sergey
Sergey
Нет большого смысла переменные по веткам таскать.
Dmitry
хорошо, остановимся на следующей модели:
roles/*, playbooks полностью переезжают по веткам. параметры окружения, инвентарь залочены в ветке (inventory/, group_vars, host_vars...)
Dmitry
так?
Sergey
да, вполне.
только в этой модели описанный выше вопрос с пином версий плоховато решается.
Alexander
Как мне общий для ролей файл переменных сделать? Куда его засунуть?
Sergey
Alexander
Sergey
Уф, спасибо
Только сразу предупреждаю, что это придётся это для каждого инвентори сделать.
Alexander
Ну мне пока главное, что для всех ролей сразу
Dmitry
Dmitry
Sergey
я пин версий делал в group_vars/all/versions.yml.
Тогда у тебя любая группа и любая роль знает, какая версия какого компонента должна быть.
Dmitry
Спасибо. Пойду думать мозгом
Sergey
В целом цель простая - любая ветка должна содержать всё необходимое дла того, чтобы её развернуть туда, куда твой процесс предусматривает.
Sergey
Светлых мыслей тебе 😊
Dmitry
Dmitry
кто-то юзает? Давно не смотрел, раньше не было назначения ролей... https://theforeman.org/plugins/foreman_ansible/2.x/index.html
bebebe
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
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 же
Yes
simplemice.eth
в гугле :)
Alexander
https://docs.ansible.com/
Alexander
у меня работает. основной - нет
Yes
bebebe
хехе, начал искать твиты по этому поводу, и первый что нашел от @vrutkovs 24 секунды назад 😊
Vadim
ну дык, все ж профи, в закрытых чатиках над контентменеджерами хихикать
bebebe
ну, надо сказать что какой-то индус 15 минут назад хайлайтнул @ansible в твитторе с этой проблемой
https://twitter.com/sandipb/status/1037615758019162113
Yes
cent
Так https://docs.ansible.com же работает.
bebebe
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
Vadim
за использование blockinfile и lineinfile больше двух раз надо милицию вызывать
Nklya
Emil
Nklya
bebebe
Udjin
prometheus.yml
https://pastebin.com/ZWRxzAEn
cодержимое переменной my_hosts после запуска этого таска - https://pastebin.com/Lyy6q5SX - айпишник хоста из группы. В группе один хост.
В конце хочу получить вот это:
https://pastebin.com/8e1mwcJc
—————————————————
Прошу прощения, но я бы решил эту задачу на руби за 3 минуты. Но просто хочу следовать канонам ансибла, и не пихать модули шелла. Это ещё хуже чем blockinfile использовать.
Я не получу никакой зарплаты за это. Это задание - чисто для себя, если хотите - просто интересно, изучаю ансибл.
Если вы позволите, я искренне готов отблагодарить вас за помощь как-нибудь материально, на пиво, например)
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, и заново сдампить