DjinN
подскажите, у меня есть плейбук, в нем некоторые роли запускаются, только если я укажу true для переменной role: disable_se_linux, when: disable_se_linux == 'true' как мне сделать, чтобы по дефолту было false, чтобы при запуске всегда не приходилось переменную задавать?
Alex
| default()
Roman
задать значение в group_vars, либо в самой роли задавать по умолчанию, если не указано иное
DjinN
понял, спасибо
DjinN
when: disable_se_linux == 'true' Не надо так
по поводу se_linux или ansible?
Timur
when: disable_se_linux | bool Вот так делайте тогда уж
Anonymous
Varvara Savchenko будет жить. Поприветствуем!
Bird
Ну где ты, Вар-ва-ра, угу, гм (с)
Andrey
всем привет никто не сталкивался в версии ansible2.8.3 выскакивает ошибка при запуске playbook ERROR! unexpected parameter type in action: <type 'bool'> The error appears to be in '/roles/bootstrap/tasks/main.yml': line 1, column 3, but may be elsewhere in the file depending on the exact syntax problem. The offending line appears to be: - name: bootstrap_server ^ here сам yml фаил - name: bootstrap_server include: bootstrap.yml tags: bootstrap gather_facts: no в версии 2.7.9 все работает нормально
Отделение Bereke Bank
А в ямле что?
Max
А в ямле что?
масленница или бородавка
Andrey
А в ямле что?
если вопрос мне то вот yml фаил ``` - name: bootstrap_server include: bootstrap.yml tags: bootstrap gather_facts: no```
Отделение Bereke Bank
извиняюсь. В bootstrap.yml что?)
Andrey
- name: bootstrap python raw: sudo apt-get install python2.7 -y - name: bootstrap setuptools and python-apt raw: sudo apt-get install python-setuptools python-apt -y - name: install python-pip apt: name: python-pip state: present update_cache: yes
Andrey
такое поведение только в версии 2.8... с остальными все нормально
Andrey
false не помогает
Andrey
А hosts где?
hosts в корне где и ansible.cfg
Timur
hosts в корне где и ansible.cfg
Что за странная организация плейбука?
Timur
В каком еще корне?
Andrey
изначально дергается playbook *.yml - name: base install for all hosts hosts: all gather_facts: no roles: - bootstrap в этой роли прописаны определенные установки
Timur
И как роль bootstrap выглядит?
Andrey
main.yml - name: bootstrap server include: bootstrap.yml tags: bootstrap gather_facts: no и bootstrap.yml - name: bootstrap python raw: sudo apt-get install python2.7 -y - name: bootstrap setuptools and python-apt raw: sudo apt-get install python-setuptools python-apt -y - name: install python-pip apt: name: python-pip state: present update_cache: yes
kevit
это парсера глюк
kevit
ошибка остается той же, line 1?
Timur
Приведите код в актуальное состояние для современной версии ансибла, ткскзть
kevit
yamllint / ansible-lint что говорит про эту роль? warnings есть при старте если запустить ANSIBLE_DEPRECATION_WARNINGS=True ansible-playbook?
Anonymous
Есть у кого-то истории успеха деплоя через ansible под аккаунтом, который использует MFA с OTP паролем?
Andrey
да как раз начал переписывать
Артём
Есть у кого-то истории успеха деплоя через ansible под аккаунтом, который использует MFA с OTP паролем?
Выделить постоянный токен, прокатить им, удалить токен. С интересом послушал бы более успешные варианты.
Anonymous
@vanch будет жить. Поприветствуем!
Anonymous
@baronPampaDonBau будет жить. Поприветствуем!
Anonymous
Подскажите пожалуйста, а можно как-то порядок хостов сортировать, которые отдаются через magic переменные? У меня есть jinja шаблон, который заполняется хостами из определенной группы. И бывает такой сценарий, что таск в котором выполняется шаблонизация оказывается changed, что в общем-то логично, т.к. содержимое поменялось. Но с практической точки зрения там изменился только порядок хостов, который в общем-то не играет роли. Вот так выглядит строка в шаблоне "retry_join": [{% for server in groups['consul_servers'] %}"{{ hostvars[server].consul_advertise_address }}"{%- if not loop.last %},{% endif %}{% endfor %}],
DjinN
Может кто объяснить, что делает changed_when? точнее даже changed_when: true
Sergey
Может кто объяснить, что делает changed_when? точнее даже changed_when: true
https://docs.ansible.com/ansible/latest/user_guide/playbooks_error_handling.html#overriding-the-changed-result
Sergey
почти понял %)
Что осталось непонятым?
AlexShmel🐝
https://docs.ansible.com/ansible/latest/user_guide/playbooks_error_handling.html#overriding-the-changed-result
я так понимаю, оно больше используется в случаях с многоразовым запуском плейбука, что бы не перезаписивать то что уже было changed, верно ?
DjinN
Что осталось непонятым?
я так понимаю, что это использется чтобы просто в выводе поменять результат работы?
DjinN
хм
DjinN
то есть changed_when: true заставит каждый раз делать действие вне зависимости от каких либо иных факторов?
Михаил Telsir
Коллеги, есть ли способ убить процесс кроме использования shell: kill -9 PID !?
DjinN
shell и без changed_when всё делает всегда
тогда буду на практике смотреть, с лету не понял (
AlexShmel🐝
Привет, подкажите пожалуйста, есть у меня вот такой кусок - name: Upload scripts copy: src: "files/{{ item.f }}" dest: "/tmp/{{ item.d }}/" owner: root group: root mode: 0755 with_items: - { f: 'config_ac.sh', d: 'terraform' } - { f: 'docker-compose_ac.yaml', d: 'terraform/docker' } - { f: 'postgresql-ssl.dockerfile', d: 'terraform/docker' } - { f: 'postgresql-ssl-configure.sh', d: 'terraform/docker' }как мне для одного из этих файлов применить 0711 вместо 0755 ? ( к тому который sh)
Anton
то есть changed_when: true заставит каждый раз делать действие вне зависимости от каких либо иных факторов?
Нет, будет выставлять статус задачи в сценарии как изменённый. Т.е. если пишешь в сценарии башсибл комманду которая только возвращает тебе значения, ничего не меняя в состоянии хоста, то лучше бы ставить changed_when: false или обрабатывать вывод шел команды на изменения внесенные этой коммандой
Alex
- include_vars: "../../role-name/vars/main.yml" а есть ли более красивый и правильный способ импорта без использования ../../ ?
Anton
Спасбио большое
Что-то типа: ` - name: Update /etc/resolv.conf with DNS2 if it exists raw: "grep -q {{ DNS2 }} /etc/resolv.conf && echo None || (echo Changed;echo nameserver {{ DNS2 }} >> /etc/resolv.conf)" when: - DNS1 is defined - DNS2 is defined register: resolv2 changed_when: "resolv2.stdout_lines[0] == 'Changed'" `
Anonymous
@x_All_x будет жить. Поприветствуем!
Damir
Заодно и читаемость повысите
Alex
так может кто просветить насчет путей в include_vars?
checkdiff
так может кто просветить насчет путей в include_vars?
если относительно чего, то корень обычно роль/плейбук.
Alex
мне относительно корня папки с ролями
checkdiff
у нас заведено так например: vars/os/debian.yml и отдельная таска которая ищет специфичные настройки под дистр: - name: Include os specific variables include_vars: "{{ __vars_item }}" when: __vars_item | length > 0 vars: __vars_item: "{{ lookup('first_found', __vars_search) }}" __vars_search: files: "{{ __vars_candidate }}" paths: "{{ __vars_path }}" skip: true loop: "{{ __vars_files }}" loop_control: loop_var: __vars_candidate defaults/main.yml __vars_path: - vars/os - vars __vars_files: - "{{ ansible_os_family | lower }}.yml" - "{{ ansible_distribution | lower }}.yml" - "{{ ansible_distribution | lower }}-{{ ansible_distribution_major_version | lower }}.yml" - "{{ ansible_distribution | lower }}-{{ ansible_distribution_version.replace('.', '-') | lower }}.yml" Аналогично с тасками под разные ОС.
Alex
у меня все таки немного другой случай
Alex
надо иклюдить варсы с другой роли
Alex
и хотелось бы избавиться от ../../ в путях
checkdiff
vars_from
checkdiff
директорива есть
checkdiff
при подключении роли
Sergey
и хотелось бы избавиться от ../../ в путях
Всё просто: Ansible имеет определённые defaults, и рассчитан на определённую структуру проекта. Если ты забиваешь на неё - ССЗБ.
Sergey
(см. правила в пине)
George
Глупый вопрос: а переменные, определённые в roles/role1/vars/main.yaml видны в role2? (role1 и role2 назначены на один хост)
Sergey
Глупый вопрос: а переменные, определённые в roles/role1/vars/main.yaml видны в role2? (role1 и role2 назначены на один хост)
Если перед role2 вызывалась role1 - то да, они будут загружены и "сплющены" в hostvars.
Sergey
Но это - путь на тёмную сторону.