Dmitry
если ты дергаешь формулу через salt-api webhook, то в ней тебе доступна примерно такая штука {% set blabla = data.get('post', {}) %} ensure_not_used_lvm: lvm.pv_absent: - name: {{ blabla.pillars.pvname }}
Dmitry
то есть чтобы работало без исправления формулы (переменные были одни и те же), наверное надо наколхозить вверху что-то типа set pvname = blabla.pillars.pvname
Sergei
Да, мне вот эта штука и нужна ))) Спасибо. Там в документации черт ногу сломит 😞
Dmitry
но мне кажется, можно как-то проще
Dmitry
попробуй вот такую 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 под рукой
Dmitry
по-моему, дело просто либо в pillars у тебя вместо pillar, либо в kwarg - склероз изменяет уже
Dmitry
еще помнится, что название формулы передавалось вроде через "mods": "my_cool_state", а не через "arg", но это вообще хз, я трогал когда еще salt-api отдельно ставился, а потом его в главную репу впилили вроде, мало ли что там переделали
Dmitry
может еще fun на самом деле state.sls, а не state.apply или воообще state.orchestrate :D
Sergei
спасибо, попробую обязательно ))
Dmitry
ставлю на pillars вместо pillar, мне кажется если ты заменишь у себя множественное число на единственное, оно просто заработает само, без приседаний с data.get('post', {}) если не заработает, тогда попробовать fun state.sls, название формулы в mods, и pillar в kwarg напиши потом, как оно
Sergei
Все получилось так: pillars на pillar в качестве переменной указал pillar.pvname Заработало без set))
Sergei
json: { "client": "local", "tgt": "*", "fun": "state.apply", "arg": ["test","test=True"], "kwarg": { "pillar": { "pvname": "/dev/sda/" } } }
Sergei
state: ensure_not_used_lvm: lvm.pv_absent: - name: {{ pillar.pvname }}
Dmitry
yep, just a typo :D
Magistr
http://paste.omsklug.com/5098/ А чего нехватает в этом коде ? тут ругаеться что 'dict object' has no attribute 'item'
Denis 災 nobody
делаеть.. 🙈
Denis 災 nobody
он ругаеться, мы ругаемься, они ругаються.. срочно учим новые слова 😂
niko
Можт пробелов между фигурными скобками
Ivan
Парни, а есть где-нибудь дока по ansible-console
Dmitry
http://paste.omsklug.com/5098/ А чего нехватает в этом коде ? тут ругаеться что 'dict object' has no attribute 'item'
вот в этой строчке косяк: replace='UUID={{UUID.item}}' он у переменной UUID (которую считает словарем) не может найти ключ item
Magistr
http://paste.omsklug.com/5099/ а переменная выглядит вот так
Magistr
и из нее мне нужно содержимое stdout
Maxim
всем привет! У меня есть несколько файлов (rolename/vars/var_filename.yaml) лежат, при этом фактически роль одинаковая для всех, в rolename/tasks/main.yaml просто идет include_vars: var_filename.yaml, и затем include: configure.yaml. Подскажите как декомпозицию получше сделать, а то уже всю голову сломал. Можно как то в роль передать файл с переменными? по аналогии с { role: common, variable_name: '{{ VAR }}' } ?
Ivan
> @mbaran0v host_vars/group_vars не пробовал?
Maxim
по факту там хост один, ролью раскатываются сайты (разные)
Dmitry
и из нее мне нужно содержимое stdout
что-то странное написано в первом (верхнем) таске
Magistr
по сути задача в fstab прописать маунтпоинты с UUID
Maxim
Можно на уровне плейбуков инклюдить переменные
с ролями? или про чистый плейбук идет речь?
Dmitriy
С ролями, угу. Если роль одна и хост один - наверное это удобнее будет менеджить
Dmitry
по сути задача в fstab прописать маунтпоинты с UUID
попробуй что-то вроде http://dpaste.com/31S8XV3
Dmitry
попробуй что-то вроде http://dpaste.com/31S8XV3
ой бля, работать не будет. в строчке с regexp='/dev/{{ item }}' сломается
Maxim
С ролями, угу. Если роль одна и хост один - наверное это удобнее будет менеджить
что-то не соображу как это.. а можно пример? или ссылку?
Dmitriy
что-то не соображу как это.. а можно пример? или ссылку?
ох. давай тогда начнём с задачи? Есть хостинг с 25 сайтами на вордпрессе и одна роль, которая всё это менеджит. Для каждого сайта свои переменные. И надо всё это удобно разместить. Так?
Dmitriy
Как часто вообще эту роль запускать надо и как часто надо в неё руками лазить?
Maxim
ролей там несколько, одна в частности деплоит сайты
Dmitriy
И один запуск должен затронуть только один сайт, так?
Maxim
И один запуск должен затронуть только один сайт, так?
если деплоим один сайт - то да один. Сейчас это тегами решено
Dmitriy
Энивей, я бы это решал так: Есть плейбук общий на всех. В нём есть include_vars: /path/to/var/files/{{ var }} И плейбук можно запускать с параметром -e var=example.com
Dmitriy
роль тогда разгрузится и обобщится, от тегов можно будет отказаться
Dmitriy
но это по одному сайту за раз
Magistr
попробуй что-то вроде http://dpaste.com/31S8XV3
ты почти угадал, вверху item.item предательский надо было сделать, спасибо
Roman
Привет, никто не сталкивался с проблемой, что при одинаковом шаблоне для одной железки генерится конфиг, а для другой - нет
Roman
внутри yaml переменные все правильные и одинаково определены
Roman
в шаблоне референс на соседнюю железку
Roman
FAILED! => {"changed": false, "failed": true, "msg": "AnsibleUndefinedVariable: 'dict object' has no attribute u'
Roman
выдает вот это всё
Denis 災 nobody
юникод влез?
Roman
Да
Roman
юникод влез?
Знаешь как полечить?
Aleksandr
Привет, кто-нибудь пользуется модулем vsphere_guest?
Aleksandr
Вопрос про кастомизацию template (хочу ip задавать машинкам при деплое)
Aleksandr
неа
Aleksandr
так не работает, пробую с centos
Dmitry
хз, у меня vmware нет вообще. но легкий гуглеж показывает, что любители сферы массово приседают в гамаках: "create VM, obtain an IP initially, discover it and then assign a new IP"
Aleksandr
Короче, видимо все сводится к тому, что надо чтобы темплей загрузился с каким-то ручным ip и дальше его менять, просто хотелось это сделать через vsphere
Dmitrii
А как в ансибле посмотреть результирующие данные из нескольких инвентори файлов?
Dmitrii
В случае если один динамический, а другой статический. Использую как директорию.
Petr
насколько я помню апи всферы, то адрес меняется после создания машины
Aleksandr
ну вроде как один из вариантов, если vm-tools есть на guest системе, то vsphere подключается к машине и меняет его
Aleksandr
но 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."
Aleksandr
и как я понимаю, через vmx ip гестовой машине не поменять, соотв, vm_extra_config: ip_address: "{{ fuck_yeah_static_ip }}" - не имеет смысла, оно просто игнорится
Petr
да
nvkv
Знаете, дорогие котаны. Я в замешательстве
nvkv
сюда писать или в @ru_docker
nvkv
В общем, есть у меня docker-compose.yml, который поднимает приложение
nvkv
приложение состоит из четырёх контейнеров
nvkv
образа для этих контейнеров регулярно меняются в registry
nvkv
запускаю я его через ansible docker_service
nvkv
И не могу понять, как мне заставить его перекачивать образы, если они изменились?
nvkv
@cadmi обругай меня матом, что ли
Aleksandr
pull (added in 2.2) Use with state present to always pull images prior to starting the application. Same as running docker-compose pull. When a new image is pulled, services using the image will be recreated unless recreate is never.
Dmitry
в 2.2 будет pull: yes, я так думаю, неспроста ? :)
nvkv
во
nvkv
Вы клёвые, спасибо
nvkv
пока, видимо, придётся закостылить