
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
Не знаю почему, но такая конструкция не отрабатывает. точнее таски не делегируюдтся на удаленные хосты

Vadim
24.07.2018
15:49:02


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
сейчас попробую. спасибо


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 будет жить. Поприветствуем!

Alex
25.07.2018
07:31:19

Vadim
25.07.2018
07:32:40

Artem
25.07.2018
07:33:13

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

Vadim
25.07.2018
07:37:31

Danis
25.07.2018
07:37:33
Я мог бы 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
Это вообще без with_dict получается? Пробовал так "{{ aaa[item.key].cc1 }}" - не работает.

Alex
25.07.2018
08:19:36

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.
задача: плейбуком собрать хостнеймы со всех этих машин в новый инвентори.

Vladislav
25.07.2018
10:25:28

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

mandrivaman
25.07.2018
11:01:09

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

mandrivaman
25.07.2018
11:02:07

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

Sergey
25.07.2018
11:44:17

Danis
25.07.2018
11:46:44

mandrivaman
25.07.2018
11:58:02

Vadim
25.07.2018
11:59:12

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

Pavel
25.07.2018
12:09:29

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

Google

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

Pavel
25.07.2018
13:14:41

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
Из задачи - накатывание на разные группы хостов накатывать немного разный набор софта.
Для каждой отдельной группы хостов будет отдельный плейбук.
А роли сами будут из общей папки с ролями браться

Alexey
25.07.2018
13:18:45

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

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

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

bebebe
25.07.2018
13:24:54

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

Constantin
25.07.2018
13:37:19