@pro_ansible

Страница 525 из 625
Vlad
24.07.2018
12:08:05
Можно прямо из ansible юзать модулем win_dsc: http://devdocs.io/ansible~2.6/user_guide/windows_dsc

dmage
24.07.2018
15:41:27
а какой модуль лучше всего юзать, если нужна таска ранать один и тот же батник под виндой каждые 5 минут?

win_scheduled_task чото совсем не аналог крона

Boris
24.07.2018
15:48:00
Привет, подскажите, могу ли я Использовать основать основной плейбук для localhost , оастльные таски в нем делегировать для других хостов регистрируемых в данном плейбуке из названия файлов?* Например : --- - hosts: localhost connection: local vars: cron_dir: '../../cron/' tasks: - name: "Get inventory name by filename" local_action: 'command ls {{ cron_dir }}' register: dst_hosts - debug: msg: 'hosts is {{ dst_hosts }}' - name: "Delivery cron file. Centos system." copy: src: '{{ cron_dir }}' dest: '/var/spool/cron/postgres' owner: 'postgres' group: 'postrges' mode: '0600' when: ansible_distribution == 'CentOS' or ansible_distribution == 'Red Hat Enterprise Linux' delegate_to: '{{ item }}' with_items: '{{ dst_hosts }}'

Google
Boris
24.07.2018
15:48:37
Не знаю почему, но такая конструкция не отрабатывает. точнее таски не делегируюдтся на удаленные хосты

Boris
24.07.2018
15:49:09
а эти хосты прописаны в инвентори?
verbose показывает TASK [Delivery cron file. Centos system.] *************************************************************************************************************************************************************************************************** task path: /home/elbars/repo/Ansible/playbooks/deploy_cron.yml:14 skipping: [localhost] => (item=stderr_lines) => { "changed": false, "item": "stderr_lines", "skip_reason": "Conditional result was False" } skipping: [localhost] => (item=changed) => { "changed": false, "item": "changed", "skip_reason": "Conditional result was False" } skipping: [localhost] => (item=stdout) => { "changed": false, "item": "stdout", "skip_reason": "Conditional result was False" } skipping: [localhost] => (item=delta) => { "changed": false, "item": "delta", "skip_reason": "Conditional result was False" } skipping: [localhost] => (item=stdout_lines) => { "changed": false, "item": "stdout_lines", "skip_reason": "Conditional result was False" } skipping: [localhost] => (item=end) => { "changed": false, "item": "end", "skip_reason": "Conditional result was False" } skipping: [localhost] => (item=start) => { "changed": false, "item": "start", "skip_reason": "Conditional result was False" } skipping: [localhost] => (item=cmd) => { "changed": false, "item": "cmd", "skip_reason": "Conditional result was False" } skipping: [localhost] => (item=failed) => { "changed": false, "item": "failed", "skip_reason": "Conditional result was False" } skipping: [localhost] => (item=stderr) => { "changed": false, "item": "stderr", "skip_reason": "Conditional result was False" } skipping: [localhost] => (item=rc) => { "changed": false, "item": "rc", "skip_reason": "Conditional result was False" }

Vadim
24.07.2018
15:50:29
угу, потому что when: использует факты локалхоста

Boris
24.07.2018
15:51:11
угу, потому что when: использует факты локалхоста
понял. т.е я могу отдельно их собрать в таске только дял удаленных хостов, получается

сейчас попробую. спасибо

Alex
24.07.2018
15:51:20
verbose показывает TASK [Delivery cron file. Centos system.] *************************************************************************************************************************************************************************************************** task path: /home/elbars/repo/Ansible/playbooks/deploy_cron.yml:14 skipping: [localhost] => (item=stderr_lines) => { "changed": false, "item": "stderr_lines", "skip_reason": "Conditional result was False" } skipping: [localhost] => (item=changed) => { "changed": false, "item": "changed", "skip_reason": "Conditional result was False" } skipping: [localhost] => (item=stdout) => { "changed": false, "item": "stdout", "skip_reason": "Conditional result was False" } skipping: [localhost] => (item=delta) => { "changed": false, "item": "delta", "skip_reason": "Conditional result was False" } skipping: [localhost] => (item=stdout_lines) => { "changed": false, "item": "stdout_lines", "skip_reason": "Conditional result was False" } skipping: [localhost] => (item=end) => { "changed": false, "item": "end", "skip_reason": "Conditional result was False" } skipping: [localhost] => (item=start) => { "changed": false, "item": "start", "skip_reason": "Conditional result was False" } skipping: [localhost] => (item=cmd) => { "changed": false, "item": "cmd", "skip_reason": "Conditional result was False" } skipping: [localhost] => (item=failed) => { "changed": false, "item": "failed", "skip_reason": "Conditional result was False" } skipping: [localhost] => (item=stderr) => { "changed": false, "item": "stderr", "skip_reason": "Conditional result was False" } skipping: [localhost] => (item=rc) => { "changed": false, "item": "rc", "skip_reason": "Conditional result was False" }
Так ты в инвентори то зарегай список из переменной то. Ну и условия перепиши на проверку семейства

Boris
24.07.2018
15:51:42
а вот условия да, выше подсказала Вадим, что нужно факты пересобрать

спасибо. буду пробовать

Vadim
24.07.2018
15:52:42
попробуй when: hostvars[item].ansible_distribution - но тут надо убедится что факты с них собраны

Alex
24.07.2018
15:53:34
ну можно проверить ещё одним таском и собрать факты если их нет.

Google
Boris
24.07.2018
15:54:31
да. фактов на удаленные хосты нет, буду собирать , благодарю

Terminator
24.07.2018
20:49:10
@Regfor будет жить. Поприветствуем!

@x066ut будет жить. Поприветствуем!

Artem Lobzov будет жить. Поприветствуем!

Danis
25.07.2018
07:25:11
Есть vars/main.yml: aaa: b1: cc1: rara.tgz cc2: tata.tgz b2: cc1: hoho.tgz cc2: lala.tgz b3: cc1: tiki.tgz cc2: gogi.tgz Как обратиться ко всем cc1? Нужно что-то вроде aaa.*.cc1 Попробовал так, не работает: - name: test copy: src: "{{ item.cc1 }}" dest: /tmp/ with_items: "{{ aaa }}"

Terminator
25.07.2018
07:27:15
@SergeySokolov будет жить. Поприветствуем!

Artem
25.07.2018
07:33:13
Danis
25.07.2018
07:37:07
with_dict
С диктом пробовал, он ведь не для таких случаев предназначен, не вышло.

Danis
25.07.2018
07:37:33
With_nested?
Не слышал, буду пробовать.

А какой еще тут случай? aaa - это dict
Ну точно также, просто переименовав на with_dict не прокатило.

Я мог бы item.value, но мне ведь нужен именно сс1.

Vadim
25.07.2018
07:43:21
aaa[item.key].cc1?

или функциональный способ через https://docs.ansible.com/ansible/2.5/user_guide/playbooks_filters.html#extracting-values-from-containers

Danis
25.07.2018
07:48:02
aaa[item.key].cc1?
Оно прям так и пишется?

Это вообще без with_dict получается? Пробовал так "{{ aaa[item.key].cc1 }}" - не работает.

Alex
25.07.2018
08:19:36
Это вообще без with_dict получается? Пробовал так "{{ aaa[item.key].cc1 }}" - не работает.
https://docs.ansible.com/ansible/2.4/playbooks_loops.html#looping-over-subelements Вот то что тебе нужно

Terminator
25.07.2018
08:55:38
Igor Bo будет жить. Поприветствуем!

Google
Terminator
25.07.2018
09:04:45
@Alexey_Tihonov будет жить. Поприветствуем!

mandrivaman
25.07.2018
10:24:11
глупых вопросов псто. есть набор IP-адресов в виде файла hosts для ansible. задача: плейбуком собрать хостнеймы со всех этих машин в новый инвентори.

mandrivaman
25.07.2018
10:25:32
пытаюсь сделать так: --- - hosts: all remote_user: SOME_USERNAME become: yes become_method: sudo tasks: - name: Set hostname on conf file lineinfile: create: yes path: /SOMEPATH line: Hostname={{ ansible_hostname }} ... но файл не создается, а если он уже есть - не меняется

я понял. оно пишет в файл на той машине, к которой обращается. а как бы ее перенаправить на файл с локальной машины?

Sergey
25.07.2018
11:00:24
я понял. оно пишет в файл на той машине, к которой обращается. а как бы ее перенаправить на файл с локальной машины?
Ты запускаешь на удалённом хосте программу на Python, которая пишет в локальный файл. В общем виде перенаправления не существует. Тебе нужна другая программа, то есть другой модуль Ansible.

Sergey
25.07.2018
11:01:25
Озвучь первичную задачу.

mandrivaman
25.07.2018
11:02:07
Озвучь первичную задачу.
инвентори содержит только IP-адреса нужно поправить инвентори - допилить хостнеймы

Sergey
25.07.2018
11:11:48
инвентори содержит только IP-адреса нужно поправить инвентори - допилить хостнеймы
Не надо так. Исправлять бардак не очень подходящим инструментом - путь к плохим впечатлениям об инструменте. Но если ты готов к боли и унижению - изволь: тебе нужен play с gather_facts: true и tasks: []. После этого делаешь простейший таск для localhost, в котором полученный словарь (всё собранное будет лежать в hostvars[inventory_hostname]) пишешь в локальный файл.

Admin
ERROR: S client not available

Nklya
25.07.2018
11:19:44
Если это один раз сделать нужно, это просто скрипт сделать какой-нибудь

Danis
25.07.2018
11:30:21
https://docs.ansible.com/ansible/2.4/playbooks_loops.html#looping-over-subelements Вот то что тебе нужно
Это не совсем то. Но на той странице много with_..., возможно что-то найдется.

Sergey
25.07.2018
11:44:17
Есть vars/main.yml: aaa: b1: cc1: rara.tgz cc2: tata.tgz b2: cc1: hoho.tgz cc2: lala.tgz b3: cc1: tiki.tgz cc2: gogi.tgz Как обратиться ко всем cc1? Нужно что-то вроде aaa.*.cc1 Попробовал так, не работает: - name: test copy: src: "{{ item.cc1 }}" dest: /tmp/ with_items: "{{ aaa }}"
Какой результат нужен? Классический вариант - with_dict: "{{ aaa }}" Тогда item.key будет пробегать b1, b2, b3, а item.value - соответственно, вложенные dict'ы. item.value['cc1'] - искомая штука.

Constantin
25.07.2018
12:05:45
Подскажите, как сделать распрыжку через несколько хостов? Допустим у меня есть хост 1 и хост 3. С хоста 1 хочу запустить плэйбук на хосте 3, но подключиться к хосту 3 можно только с хоста 2. ssh на host 2 -> ssh на хост 3

Липоля Аймаксович
25.07.2018
13:08:06
И снова привет. Продолжим виндострадания :) Есть задача устанавливать питон разных версий на винду, но там аргументы отличаются для установки и необходимые действия. На ум приходит следующее решение: Завести в роли переменную типа python_version_to_install, и в зависимости от значений 2 или 3 (которое будет передаваться плейбуком) - инклюдить нужный файл в tasks/main.yml Годится так? Или можно более изысканно решить эту задачу?

Google
Maksim
25.07.2018
13:14:06
нооорм

Maksim
25.07.2018
13:14:46
похожее есть для разных дистрибутивов линукса, если редхат, то делаем одно, есть дебиан то другое

Липоля Аймаксович
25.07.2018
13:17:14
а в догонку еще один вопрос про организацию инвентори. У себя пришел вот к такой схеме. . └── inventories └── build-agents ├── default-pool │ ├── group_vars │ │ └── common-agents │ │ ├── vars.yml │ │ └── vault.yml │ └── hosts.yml ├── test2-pool │ ├── group_vars │ │ └── test2-agents │ │ ├── vars.yml │ │ └── vault.yml │ └── hosts.yml └── test-pool ├── group_vars │ └── test-agents │ ├── vars.yml │ └── vault.yml └── hosts.yml Из задачи - накатывание на разные группы хостов накатывать немного разный набор софта. Для каждой отдельной группы хостов будет отдельный плейбук. А роли сами будут из общей папки с ролями браться

Липоля Аймаксович
25.07.2018
13:19:42
волт-файлы - для хранения паролей всяческих пользовательских. Я пока туда переменные "секретные" только вынес, разобраться в волтом это уже следующая задача будет, как только костяк общих ролей напишу под винду.

спасибо, сохраню себе структуру для инфы :)
пожалуйста) вроде и не секрет. просто я пришел к такому виду инвентори, после того как официальную документация по организации статического инвентори покурил немного :)

Pavel
25.07.2018
13:21:04
у меня вынесены в отдельный файл только "большие" значения - типа ссл ключей

Липоля Аймаксович
25.07.2018
13:23:42
я в вольт пока не лез глубоко. обзорно по верхам почитал. да, видел что можно отдельные переменные шифровать. не особо понял пока, как там с ключевыми файлами работать для расшифровки. Ну в тем вол-файлах что у меня - планируетс яхранить пользвательские пароли, личензионные ключи для некоторого софта, и содержимое ssh ключей

Липоля Аймаксович
25.07.2018
13:24:58
смысл в том, что с разных групп тачек, сервис работает из под разных пользователей, и у каждого пользователя есть свой открытый/закрытый ключик для гита, для доступа только к нужным репозиториям. вот значения ключей и хочу подкладываь в волт файл

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