Vadim
для начала - https://github.com/subuk/awx-rpm/blob/master/awx-build.spec#L161 - эти дебиановские привычки сразу запускать сервис после установки нужно остановить на входе
Vadim
второе что сразу бросилось в глаза - https://github.com/subuk/awx-rpm/blob/master/awx-celery-beat.service - питон в /opt не надо совать, selinux будет орать
Vadim
ну и всякие мелочи типа версия задается дважды - в Version и Source0
Vadim
А можно же контексты SELinux проставить просто?....
можно, можно и селинукс отключить конечно
Sergey
ну нееееее, это моветон
Vadim
это то же самое что "запускать незнамо что из /opt"
Sergey
Эмммм. А почему же "незнамо что"? У тебя на билд-машине есть питон, из него ваяешь venv, потом этот venv запускаешь где-то ещё. Что здесь не так? По определению RPM-пакет предусматривает определённый уровень доверия содержимому, разве нет?
Vadim
>RPM-пакет предусматривает определённый уровень доверия эмммм, нет? Это просто tar.gz + скрипты которые выполняются от рута
ShadoWalkeR
Там все несколько сложней
Vadim
вы там наверху оба SRPM себе на машину ставите?
Sergey
вы там наверху оба SRPM себе на машину ставите?
Лично у меня внутренняя yum-репа (CentOS), туда бинарные пакеты, собранные из исходников, кладутся.
Maxim
привет всем. подскажите, а как-то можно заюзать переменную в when, чтобы варнинг ниже не появлялся? [WARNING]: when statements should not include jinja2 templating delimiters such as {{ }} or {% %}. Found: links.stat.path != '/some/path/{{name}}|string')
Alexander
Убрать {{}} :)
Maxim
а че, так можно было 😅
Alexander
'.../path/' + name
Maxim
а, понял
Sergey
'.../path/' + name
'<string>' ~(тильда) name
Alexander
Это уже скорей вопрос личных предпочтений:)
Maxim
всем спасибо! заработало )
Евгений
Добрый день. Нужно настроить хосты по ролям, 1 сервер и куча клиентов. Клиенты на стороне сервера настраиваются индивидуальными файлами. Инвентори с группами: клиены, сервер. Плейбук по клиентам - копирует по шаблонам с переменными файлы конфикурации на клиентов. Не понятно, как сделать цикл по клиентам для роли сервера. В одном плее можно сделать цикл по группе клиентов, сделать set_fact и вызвать с этими переменными template ? Или еще думал в плейбуке для клиентов делать delegate_to и в нем уже template. Есть идеи как лучше подойти к решению?
Нашел интересное решение своей задачи с циклами. В цикле можно вызывать include и уже внутри другого плейбука использовать эту переменную. test.yml --- - name: Get facts gather_facts: yes hosts: all - hosts: only_one_server tasks: - include: testtest.yml with_items: "{{ groups['clients'] }}" testtest.yml --- - name: SetFact set_fact: ip: hostvars['{{item}}']['ansible_default_ipv4']['address'] - name: DebugIP debug: var={{ip}} # И эту же переменную в template
RE
камрады, а как правильно запустить ансибл плейбук на только что созданной виртуалке? там ниче нет, ни апдейтов, ни самого ансибла.. есть только юзер-пасс и ip
RE
как это обычно делается?
Fedor
напрямую запускается
Fedor
через адхок команды
RE
да, мне удаленно надо
Fedor
хотя не, плейбук же
Fedor
прописывается хост в инвентори
Fedor
ansible-playbook -i inventory playbook.yml
Fedor
если просто команды
Fedor
ANSIBLE_HOST_KEY_CHECKING=False ansible --private-key=terraform -i inv all -b -m group -a "name=ansible_wheel state=present" типа такого
Fedor
это без плейбуков
Fedor
первое - чтоб не ругался на неизвестный хост, у меня авторизация по прайваткей, -b это поднятие в судо, -m модуль, потом аргументы к нему
RE
да надо новую ВМ готовить - заливать софт, заливать композ файл с нужными плейсхолдерами настроенными.. думаю это задача для плейбука но его надо както заранать
Fedor
за что?)
Fedor
а, run
RE
run )
Fedor
ну ansible-playbook -i invfile play.yml
Fedor
если есть только роль, но нет плейбука, берётся любой плейбук с hosts и roles и адаптируется
RE
понял... но для этого похоже надо иметь отдельную linux тачку с "серверной" частью ансибла. или как там она называется а у меня только vsts
RE
впрочеv там есть вроде плагин для ансибла
Fedor
любую юниксовую
Denis
да надо новую ВМ готовить - заливать софт, заливать композ файл с нужными плейсхолдерами настроенными.. думаю это задача для плейбука но его надо както заранать
Если правильно тебя понял. Ну у к примере если у тебя centos , то запускай плейбук, так как python.2.7 там предустановлен, а плейбуке ты апдейтишь, апргейдишь и т.д. Если вопрос откуда запускать, то я обычно это делаю со своей лоальной тачки
White
ребят, как сделать что бы nvm устанавливался в папку пользователя от которого запускается плейбук? плейбук запускается с sudo, и установка по видимому идет в рут директорию..
manefesto
что за nvm ?
manefesto
может mvn ?
manefesto
ааа, типа несколько версий нода ?
White
угу
White
node version manager
White
без судо не запускается плейбук, а с судо инсталит в папку рут
manefesto
ну так укажи для nvm полный путь
manefesto
а как ты его устанавливаешь тО?
White
сек
White
- name: Install nvm shell: > curl https://raw.githubusercontent.com/creationix/nvm/v0.7.0/install.sh | sh creates=/home/{{ ansible_user_id }}/.nvm/nvm.sh - name: Install node and set version shell: > /bin/bash -c "source ~/.nvm/nvm.sh && nvm install 0.10 && nvm alias default 0.10" creates=/home/{{ ansible_user_id }}/.nvm/alias
manefesto
дык эта, минутку
White
:)
Sergey
кстати, как и вытягивание баш-скриптов курлом и их запуск
White
а есть другое решение?)
White
а сам плейбук через sudo?
manefesto
- name: Install nvm shell: {{item.command}} args: chdir: /home/{{ ansible_user_id }} creates: {{item.creates}} with_items: - {command: "curl https://raw.githubusercontent.com/creationix/nvm/v0.7.0/install.sh | sh", creates: "/home/{{ ansible_user_id }}/.nvm/nvm.sh"} - {command: '/bin/bash -c "source ~/.nvm/nvm.sh && nvm install 0.10 && nvm alias default 0.10"', creates: "/home/{{ ansible_user_id }}/.nvm/alias"}
White
тогда пойдет установка в папку пользователя?
manefesto
вообще через chdir
White
спасибо я попробую
Vadim
а сам плейбук через sudo?
я так понимаю у тебя ansible_user: foo ansible_become: true ?
Vadim
тогда become: false скинет обратно на юзера, к которому коннектишься
White
ну типа того да,вот смотрите, есть пользователь appuser, мне нужно всю эту хрень установить ему в папку /home/appuser, но идет все руту в папку... при этом я запускаю так sudo play.yml
manefesto
на код хрен ты делаешь судо ?
White
так без судо фейлится на первом же таске
manefesto
- name: Install nvm shell: > {{item.command}} args: chdir: /home/{{ ansible_user_id }} creates: {{item.creates}} with_items: - {command: "curl https://raw.githubusercontent.com/creationix/nvm/v0.7.0/install.sh | sh", creates: "/home/{{ ansible_user_id }}/.nvm/nvm.sh"} - {command: '/bin/bash -c "source ~/.nvm/nvm.sh && nvm install 0.10 && nvm alias default 0.10"', creates: "/home/{{ ansible_user_id }}/.nvm/alias"} become: true become_user: {{ ansible_user_id }}
manefesto
последние две строки смотри
White
ansible_user_id - это будет appuser?
manefesto
в твоём случае да
manefesto
вообще не понимаю почему утебя роль не отрабатывает, не надо её запускать через sudo