@pro_ansible

Страница 571 из 625
Dmitry
05.09.2018
22:14:58
?

Sergey
05.09.2018
22:16:04
Миграция параметров сводится к перемещению/обновлению их между каталогами с инвентори. В этом случае у тебя _все_ ветки работают с одними и теми же параметрами. В моей практике это ок - намного чаще меняется содержание роли, чем параметры окружения.

Но может потребоваться несколько специфическая организация этих параметров.

Google
Sergey
05.09.2018
22:17:35
Dmitry
05.09.2018
22:17:40
да

плюс тесты, а-ля dev-perf, dev-perf-vasya как вариант

Sergey
05.09.2018
22:19:07
В дев-ветке у тебя этот параметр будет только для дев-инвентори, в стейдже - и в дев-инвентори, и в стейдж-инвентори, в продакшне - в дев-, стейдж- и продакшн-инвентори. Опять же - речь только о названии параметра. Значения, разумеется, могут отличаться.

Dmitry
05.09.2018
22:19:08
@vrutkovs А как ты думал про управление изменениями параметров а-ля group_vars? Какой порядок действий?

и merge по определенным путям между dev/stg/prod не возможен

(типа inventory/* )

Не понятно как это. "все работают с одноми и теми же параметрами"

или речь идет про название параметра, но не его значение

Sergey
05.09.2018
22:27:12
или речь идет про название параметра, но не его значение
только названия, естественно - ну не будет у теяб в общем случае число воркеров в продакшне одинаковым со стейджем. а вот называться сам параметр должен одинаково.

Google
Dmitry
05.09.2018
22:29:47
Хранить отдельно, например group_vars/group/dev.yaml
но этот путь ведь все равно подвержен тем же самым движениям по веткам? Мне не хочется чтобыоно было во всех ветках

Sergey
05.09.2018
22:30:49
Нет большого смысла переменные по веткам таскать.

Dmitry
05.09.2018
22:32:42
хорошо, остановимся на следующей модели: roles/*, playbooks полностью переезжают по веткам. параметры окружения, инвентарь залочены в ветке (inventory/, group_vars, host_vars...)

так?

Sergey
05.09.2018
22:36:49
да, вполне. только в этой модели описанный выше вопрос с пином версий плоховато решается.

Alexander
05.09.2018
22:37:12
Как мне общий для ролей файл переменных сделать? Куда его засунуть?

Alexander
05.09.2018
22:39:54
group_vars/all/<filename>.yml
Уф, спасибо

Sergey
05.09.2018
22:40:59
Уф, спасибо
Только сразу предупреждаю, что это придётся это для каждого инвентори сделать.

Alexander
05.09.2018
22:41:29
Ну мне пока главное, что для всех ролей сразу

Sergey
05.09.2018
22:50:31
requirements.yml ведь тоже мигрируют?
эммммм........... это про что именно? зависимости ролей?

Sergey
05.09.2018
22:52:25
я пин версий делал в group_vars/all/versions.yml. Тогда у тебя любая группа и любая роль знает, какая версия какого компонента должна быть.

Dmitry
05.09.2018
22:55:06
Спасибо. Пойду думать мозгом

Sergey
05.09.2018
22:55:55
В целом цель простая - любая ветка должна содержать всё необходимое дла того, чтобы её развернуть туда, куда твой процесс предусматривает.

Светлых мыслей тебе ?

Dmitry
05.09.2018
23:31:28
Google
Dmitry
06.09.2018
00:50:47
кто-то юзает? Давно не смотрел, раньше не было назначения ролей... https://theforeman.org/plugins/foreman_ansible/2.x/index.html

Dmitry
06.09.2018
06:39:37
bebebe
06.09.2018
06:40:53
Foreman сам по себе достаточно тяжёл в абстракциях. Он только усложнит простой подход ансибла

Боль переедет в другое место

Danis
06.09.2018
07:08:07
Как получить списком ip адреса хостов из hosts?

bebebe
06.09.2018
07:36:13
Как получить списком 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') }}"

странно, что в фактах такой информации нет об /etc/hosts

Danis
06.09.2018
07:57:06
Из инвентори файлика

bebebe
06.09.2018
07:59:41
три плети этому господину

Yes
06.09.2018
08:22:41


Сергей
06.09.2018
08:23:20
какая прелесть

bebebe
06.09.2018
08:23:59
кто-то не получит квартальную премию..

?simplemice
06.09.2018
08:24:13
ушла эпоха ансибла

Artem
06.09.2018
08:25:39
лал

Сергей
06.09.2018
08:25:59
гы - пиздаватизм

bebebe
06.09.2018
08:27:13
Updated Date: 2017-11-16T16:12:16Z Creation Date: 1995-02-03T05:00:00Z Registry Expiry Date: 2022-02-04T05:00:00Z это видимо хостинг протух

Artem
06.09.2018
08:27:58
Expiry Date: 2022 же

Google
?simplemice
06.09.2018
08:28:58
в гугле :)

bebebe
06.09.2018
08:28:58
Не вопрос, а доки то где брать ?
https://github.com/jedelman8/ansible-webdocs

Alexander
06.09.2018
08:29:04
https://docs.ansible.com/

у меня работает. основной - нет

Yes
06.09.2018
08:29:20
bebebe
06.09.2018
08:30:29
хехе, начал искать твиты по этому поводу, и первый что нашел от @vrutkovs 24 секунды назад ?

Vadim
06.09.2018
08:32:55
ну дык, все ж профи, в закрытых чатиках над контентменеджерами хихикать

bebebe
06.09.2018
08:33:29
ну, надо сказать что какой-то индус 15 минут назад хайлайтнул @ansible в твитторе с этой проблемой https://twitter.com/sandipb/status/1037615758019162113

Admin
ERROR: S client not available

Yes
06.09.2018
08:34:34
хехе, начал искать твиты по этому поводу, и первый что нашел от @vrutkovs 24 секунды назад ?
Ну короче, не так давно -), а то подумал - может закрыли проект ?

cent
06.09.2018
08:35:20
Так https://docs.ansible.com же работает.

bebebe
06.09.2018
08:35:23
Stepan T.
06.09.2018
10:01:32
Если кто не знает, есть ansible-doc MODULE_NAME -s

На случай если https://docs.ansible.com перестанет работать

Artem
06.09.2018
10:05:10
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
06.09.2018
11:37:38
Ребят, для вывода после исполнения плейбука вконце каких либо результирующих переменных есть какаятт отдельная функция или просто таск неоьхожимо писать?

Maksim
06.09.2018
11:37:58
debug

Alexander
06.09.2018
11:38:14
debug
Разве он для этого?

Maksim
06.09.2018
11:38:34
https://docs.ansible.com/ansible/2.6/modules/debug_module.html им можно все что угодно выводить

Udjin
06.09.2018
11:49:33
нужно в 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 хост

Google
Udjin
06.09.2018
11:50:06
3 дня бьюсь уже

bebebe
06.09.2018
11:50:29
не расстраивайтесь, все получится

Nklya
06.09.2018
11:51:11
Берёшь шаблоны и никакого геморроя

Strong
06.09.2018
11:52:07
подскажите плиз, какой аргумент прописать в when чтобы таска не запускалась, если определенная служба запущена?

Udjin
06.09.2018
12:08:26
prometheus.yml https://pastebin.com/ZWRxzAEn cодержимое переменной my_hosts после запуска этого таска - https://pastebin.com/Lyy6q5SX - айпишник хоста из группы. В группе один хост. В конце хочу получить вот это: https://pastebin.com/8e1mwcJc ————————————————— Прошу прощения, но я бы решил эту задачу на руби за 3 минуты. Но просто хочу следовать канонам ансибла, и не пихать модули шелла. Это ещё хуже чем blockinfile использовать. Я не получу никакой зарплаты за это. Это задание - чисто для себя, если хотите - просто интересно, изучаю ансибл. Если вы позволите, я искренне готов отблагодарить вас за помощь как-нибудь материально, на пиво, например)

bebebe
06.09.2018
12:28:25
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:

кривовато немного, но я надеюсь никто вникать не будет и не заметит :3

Vadim
06.09.2018
12:29:41
мммм, регэкспы

bebebe
06.09.2018
12:29:43
на выходе получилось такое #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']

хотя, этот жи yaml, можно его залоадить, сделать |from_yaml, поправить структуру targets, и заново сдампить

bebebe
06.09.2018
12:59:45
хотя, этот жи yaml, можно его залоадить, сделать |from_yaml, поправить структуру targets, и заново сдампить
как-то так: - name: include include_vars: file: prometheus.yaml name: prometheus delegate_to: localhost run_once: true - name: replace set_fact: msg: "{{ prometheus.test[item|int].static_configs}}" with_sequence: start=0 end={{ prometheus.test|length|int - 1}} delegate_to: localhost run_once: true

печально конечно выходит

Страница 571 из 625