@pro_ansible

Страница 37 из 625
Serg
16.08.2016
07:56:51
Коллеги, понимаю, канал про Ансибл. Но случайно, никто со SaltStack-ом дело не имеет? Точнее с api

Dmitry
16.08.2016
08:02:30
я до ansible много писал на нём. но только states, в api не лазал

Serg
16.08.2016
08:07:11
через rest не приходилось стейтами управлять?

Dmitry
16.08.2016
08:09:09
рестартилку делал

Google
Dmitry
16.08.2016
08:10:33
дергаешь рест у salt-api, он один там дырявый бэкенд рестартует, память освободить :) в принципе удобно было, прямо из мониторинга :)

Serg
16.08.2016
08:12:43
Я с этим уже худо-бедно разобрался, я пока с передачей pillars застрял и как их в state импортировать

Dmitry
16.08.2016
08:16:31
не очень понимаю

ведь все стейты и пилларсы лежат на мастере, rest просто ручка, за которую дергаешь

Serg
16.08.2016
08:17:33
Ну смотри, у нас есть стейт, там все описано пилларсами, в ресте можно их переопределить

Dmitry
16.08.2016
08:17:47
а, переопределить

Serg
16.08.2016
08:18:48
только если я дергаю в формуле yaml или jinja файл, я указываю import бла-бла-бла. Вот как такое сделать с рестом

Dmitry
16.08.2016
08:21:32
а покажи какую-нибудь простую формулу в gist где-нибудь

кажется, примерно понимаю, что ты хочешь

и как REST запрос делаешь, прицепи там

Serg
16.08.2016
08:22:18
простую формулу... Мою?

ща

ensure_not_used_lvm: lvm.pv_absent: - name: {{ pvname }}

Google
Serg
16.08.2016
08:23:11
curl -vS http://localhost:8080 -H 'Accept: application/x-yaml' -H 'X-Auth-Token: d471558838e2f95b06d6aab03c3543089e514d77' -H "Content-Type: application/json" -d @test.json

{ "client": "local", "tgt": "*", "fun": "state.apply", "arg": ["test","test=True"], "pillars": { "pvname": "/dev/sda/" }

Dmitry
16.08.2016
08:23:31
ага, понятно

ты в формуле хочешь подставить посланное в запросе pvname, а не то, что было в пилларсах

Serg
16.08.2016
08:24:20
именно )

Dmitry
16.08.2016
08:25:49
если ты дергаешь формулу через salt-api webhook, то в ней тебе доступна примерно такая штука {% set blabla = data.get('post', {}) %} ensure_not_used_lvm: lvm.pv_absent: - name: {{ blabla.pillars.pvname }}

то есть чтобы работало без исправления формулы (переменные были одни и те же), наверное надо наколхозить вверху что-то типа set pvname = blabla.pillars.pvname

Serg
16.08.2016
08:28:00
Да, мне вот эта штука и нужна ))) Спасибо. Там в документации черт ногу сломит ?

Dmitry
16.08.2016
08:32:21
но мне кажется, можно как-то проще

попробуй вот такую JSON payload, а? { "client": "local", "tgt": "*", "fun": "state.apply", "arg": ["test","test=True"], "pillar": { "pvname": "/dev/sda/" } или { "client": "local", "tgt": "*", "fun": "state.apply", "arg": ["test","test=True"], "kwarg": { "pillar": { "pvname": "/dev/sda/" } } } я точно не помню, попробовать не могу - нет сейчас salt под рукой

по-моему, дело просто либо в pillars у тебя вместо pillar, либо в kwarg - склероз изменяет уже

еще помнится, что название формулы передавалось вроде через "mods": "my_cool_state", а не через "arg", но это вообще хз, я трогал когда еще salt-api отдельно ставился, а потом его в главную репу впилили вроде, мало ли что там переделали

может еще fun на самом деле state.sls, а не state.apply или воообще state.orchestrate :D

Serg
16.08.2016
08:51:11
спасибо, попробую обязательно ))

Dmitry
16.08.2016
08:54:43
ставлю на pillars вместо pillar, мне кажется если ты заменишь у себя множественное число на единственное, оно просто заработает само, без приседаний с data.get('post', {}) если не заработает, тогда попробовать fun state.sls, название формулы в mods, и pillar в kwarg напиши потом, как оно

Serg
16.08.2016
09:15:38
Все получилось так: pillars на pillar в качестве переменной указал pillar.pvname Заработало без set))

json: { "client": "local", "tgt": "*", "fun": "state.apply", "arg": ["test","test=True"], "kwarg": { "pillar": { "pvname": "/dev/sda/" } } }

state: ensure_not_used_lvm: lvm.pv_absent: - name: {{ pillar.pvname }}

Dmitry
16.08.2016
09:36:47
yep, just a typo :D

Magistr
16.08.2016
09:55:54
http://paste.omsklug.com/5098/ А чего нехватает в этом коде ? тут ругаеться что 'dict object' has no attribute 'item'

Google
Denis 災 nobody
16.08.2016
10:00:25
делаеть.. ?

он ругаеться, мы ругаемься, они ругаються.. срочно учим новые слова ?

nikoinlove
16.08.2016
10:02:34
Можт пробелов между фигурными скобками

Ivan
16.08.2016
10:03:27
Парни, а есть где-нибудь дока по ansible-console

Dmitry
16.08.2016
10:13:30
http://paste.omsklug.com/5098/ А чего нехватает в этом коде ? тут ругаеться что 'dict object' has no attribute 'item'
вот в этой строчке косяк: replace='UUID={{UUID.item}}' он у переменной UUID (которую считает словарем) не может найти ключ item

Magistr
16.08.2016
10:17:12
http://paste.omsklug.com/5099/ а переменная выглядит вот так

и из нее мне нужно содержимое stdout

Maksim
16.08.2016
10:18:52
всем привет! У меня есть несколько файлов (rolename/vars/var_filename.yaml) лежат, при этом фактически роль одинаковая для всех, в rolename/tasks/main.yaml просто идет include_vars: var_filename.yaml, и затем include: configure.yaml. Подскажите как декомпозицию получше сделать, а то уже всю голову сломал. Можно как то в роль передать файл с переменными? по аналогии с { role: common, variable_name: '{{ VAR }}' } ?

Ivan
16.08.2016
10:27:15
> @mbaran0v host_vars/group_vars не пробовал?

Maksim
16.08.2016
10:27:48
по факту там хост один, ролью раскатываются сайты (разные)

Dmitry
16.08.2016
10:30:11
и из нее мне нужно содержимое stdout
что-то странное написано в первом (верхнем) таске

Magistr
16.08.2016
10:31:14
по сути задача в fstab прописать маунтпоинты с UUID

Maksim
16.08.2016
10:34:14
Можно на уровне плейбуков инклюдить переменные
с ролями? или про чистый плейбук идет речь?

Dmitriy
16.08.2016
10:35:12
С ролями, угу. Если роль одна и хост один - наверное это удобнее будет менеджить

Dmitry
16.08.2016
10:35:52
по сути задача в fstab прописать маунтпоинты с UUID
попробуй что-то вроде http://dpaste.com/31S8XV3

попробуй что-то вроде http://dpaste.com/31S8XV3
ой бля, работать не будет. в строчке с regexp='/dev/{{ item }}' сломается

Maksim
16.08.2016
10:36:57
С ролями, угу. Если роль одна и хост один - наверное это удобнее будет менеджить
что-то не соображу как это.. а можно пример? или ссылку?

Dmitriy
16.08.2016
10:40:25
что-то не соображу как это.. а можно пример? или ссылку?
ох. давай тогда начнём с задачи? Есть хостинг с 25 сайтами на вордпрессе и одна роль, которая всё это менеджит. Для каждого сайта свои переменные. И надо всё это удобно разместить. Так?

Google
Dmitriy
16.08.2016
10:41:00
Как часто вообще эту роль запускать надо и как часто надо в неё руками лазить?

Maksim
16.08.2016
10:41:18
ролей там несколько, одна в частности деплоит сайты

Dmitriy
16.08.2016
10:42:59
И один запуск должен затронуть только один сайт, так?

Maksim
16.08.2016
10:45:01
И один запуск должен затронуть только один сайт, так?
если деплоим один сайт - то да один. Сейчас это тегами решено

Dmitriy
16.08.2016
10:46:16
Энивей, я бы это решал так: Есть плейбук общий на всех. В нём есть include_vars: /path/to/var/files/{{ var }} И плейбук можно запускать с параметром -e var=example.com

роль тогда разгрузится и обобщится, от тегов можно будет отказаться

но это по одному сайту за раз

Magistr
16.08.2016
10:54:35
попробуй что-то вроде http://dpaste.com/31S8XV3
ты почти угадал, вверху item.item предательский надо было сделать, спасибо

Роман
16.08.2016
13:54:34
Привет, никто не сталкивался с проблемой, что при одинаковом шаблоне для одной железки генерится конфиг, а для другой - нет

внутри yaml переменные все правильные и одинаково определены

в шаблоне референс на соседнюю железку

FAILED! => {"changed": false, "failed": true, "msg": "AnsibleUndefinedVariable: 'dict object' has no attribute u'

выдает вот это всё

Denis 災 nobody
16.08.2016
15:00:03
юникод влез?

Роман
16.08.2016
15:06:29
Да

юникод влез?
Знаешь как полечить?

Alex
17.08.2016
12:16:15
Привет, кто-нибудь пользуется модулем vsphere_guest?

Вопрос про кастомизацию template (хочу ip задавать машинкам при деплое)

Google
Dmitry
17.08.2016
12:29:00
Alex
17.08.2016
12:44:42
неа

так не работает, пробую с centos

Dmitry
17.08.2016
12:57:05
хз, у меня vmware нет вообще. но легкий гуглеж показывает, что любители сферы массово приседают в гамаках: "create VM, obtain an IP initially, discover it and then assign a new IP"

Alex
17.08.2016
13:18:45
Короче, видимо все сводится к тому, что надо чтобы темплей загрузился с каким-то ручным ip и дальше его менять, просто хотелось это сделать через vsphere

Dmitrii
17.08.2016
13:38:01
А как в ансибле посмотреть результирующие данные из нескольких инвентори файлов?

В случае если один динамический, а другой статический. Использую как директорию.

Petr
17.08.2016
13:46:22
насколько я помню апи всферы, то адрес меняется после создания машины

Alex
17.08.2016
13:49:38
ну вроде как один из вариантов, если vm-tools есть на guest системе, то vsphere подключается к машине и меняет его

но vm_extra_config в модуле vsphere_guest служит для "A key, value pair of any extra values you want set or changed in the vmx file of the VM. Useful to set advanced options on the VM."

и как я понимаю, через vmx ip гестовой машине не поменять, соотв, vm_extra_config: ip_address: "{{ fuck_yeah_static_ip }}" - не имеет смысла, оно просто игнорится

Petr
17.08.2016
14:05:24
да

Semyon
17.08.2016
17:26:10
Знаете, дорогие котаны. Я в замешательстве

сюда писать или в @ru_docker

В общем, есть у меня docker-compose.yml, который поднимает приложение

приложение состоит из четырёх контейнеров

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