Timur
lineinfile?
John
Всем привет!
John
Уже задавал вопрос, правда в другой группе, тут надеюсь гуру ansible подскажут
John
При выполнении таска из плейбука возникает одна и та же ошибка.Но когда запускаешь второй раз эту задачу все выполняется без ошибки.Задача удалить директорию.Пробовал двумя разными способами через shell rm -rf и через absent результат ниже.
shell
TASK [rm-dir] ******************************************************
fatal: [stpl3]: FAILED! => {"changed": true, "cmd": "cd ~/ && rm -rf project", "delta": "0:00:00.562030", "end": "2019-01-22 12:43:50.671451", "msg": "non-zero return code", "rc": 1, "start": "2019-01-22 12:43:50.109421", "stderr": "rm: cannot remove 'project': Directory not empty", "stderr_lines": ["rm: cannot remove 'project': Directory not empty"], "stdout": "", "stdout_lines": []}
absent
TASK [rm_dir] ******************************************************
fatal: [
stpl3
]: FAILED! => {"changed": false, "msg": "rmtree failed: [Errno 39] Directory not empty: '/home/user/project'"}
Timur
При выполнении таска из плейбука возникает одна и та же ошибка.Но когда запускаешь второй раз эту задачу все выполняется без ошибки.Задача удалить директорию.Пробовал двумя разными способами через shell rm -rf и через absent результат ниже.
shell
TASK [rm-dir] ******************************************************
fatal: [stpl3]: FAILED! => {"changed": true, "cmd": "cd ~/ && rm -rf project", "delta": "0:00:00.562030", "end": "2019-01-22 12:43:50.671451", "msg": "non-zero return code", "rc": 1, "start": "2019-01-22 12:43:50.109421", "stderr": "rm: cannot remove 'project': Directory not empty", "stderr_lines": ["rm: cannot remove 'project': Directory not empty"], "stdout": "", "stdout_lines": []}
absent
TASK [rm_dir] ******************************************************
fatal: [
stpl3
]: FAILED! => {"changed": false, "msg": "rmtree failed: [Errno 39] Directory not empty: '/home/user/project'"}
А что за таска-то?
Timur
Код где?
John
удалить директорию
Timur
Timur
show me the code
John
John
Код где?
- name: rm_dir
file:
state: absent
path: "~/project"
Timur
А таск из-под юзера с какими правами запускается? На той же машине или на удаленной?
John
А таск из-под юзера с какими правами запускается? На той же машине или на удаленной?
Один пользователь и на машине где запускается таск и на машине где этот таск исполняется.Есть одно но в той директории есть файлы принадлежащие другому пользователю но изменять и удалять пользователь который запускает рлейбук их естессно может у него права есть.Когда запускаешь повторно например задачу она выполняется без ошибки.
Timur
Timur
- name: rm_dir
file:
state: absent
path: "~/project"
register: remove
until: remove is succeeded
John
Но все же думаю это баг какой то.
MRY
Всех приветсвую. Ансибл ругается на:
- name: install RHEL/CentOS packages
yum:
name: "{{ item }}"
with_items:
- "{{ rh_packages }}"
when: (ansible_os_family == "RedHat")
Говорит что depricated, просит в переменной вместо {{item}} использовать {{ packages }}
но тогда перестает работать with_items: А он берет список пакетов из roles/blabla/defaults/main.yml в виде
---
deb_packages:
- curl
- git
- vim
rh_packages:
- bash-completion
- epel-release.noarch
- net-tools.x86_64
- git
- vim
- wget
Как быть ? забить на варнинги или сейчас используют другое представление ??? какой сейчас best practice для установки пакетов в зависимости от дистрибутива ????
Timur
Timur
По поводу дистрибутива я выше как-то пример приводил. Нужно инклуд тасков в зависимости от факта делать
MRY
Можно линкануть на пример ???
MRY
ссылку имею ввиду
Timur
Вот тут смотрите:
https://t.me/pro_ansible/69033
MRY
ок Спасибо
Timur
По поводу нового способа установки пакетов списком примеры есть в основной документации ансибла
Sergey
Подчистил.
Футуристичный
Коллеги, приветствую. Подскажите, как увеличить таймаут выполнения таска?
Выполняю apt update и apt upgrade, когда ОС только что созданная задача не успевает выполниться, и прерывается с комментом to retry, use: --limit @/etc/ansible/playbook.retry, но со второго раза отрабатывает.
Vladislav 👻
Почему template постоянно может возвращать changed?
Nklya
Включи дифф в кфг и посмотри что меняется
Vladislav 👻
в конфиге именно или через --diff?
Timur
Футуристичный
Vladislav 👻
Так, понял, почему, у меня в списке хостов из группы постоянно меняется последовательность... Есть идеи, как это можно устаканить?
Vladislav 👻
Сделать сортировку или есть какой-то более элегантный вариант?
Timur
Vladislav 👻
типа хосты в другом порядке пошли из-за этого идет changed
Timur
Vladislav 👻
он не используется
Timur
В каком таске?
Vladislav 👻
написал же, что т.к. лист не гарантирует последовательность элементов, то при заполнении конфига получается постоянно новая последовательность, отсюда идет diff
Vladislav 👻
Вот такая логика в конфиге:
{% for h in groups[job.target_group] %}
- "{{ hostvars[h]['ansible_host'] }}:{{ job.target_port }}"
{% endfor %}
Timur
Timur
Именно поэтому таски в плейбуках - это лист, а не словарь
Vladislav 👻
блин, точно, что-то утром туплю
Vladislav 👻
тогда я не понимаю, почему возвращается другая последовательность
Timur
Потому что вы делаете луп по словарю
Timur
Который не гарантирует последовательность элементов
Vladislav 👻
в словаре же лист
Vladislav 👻
получается, при каждом запуске он заново собирается, причем рандомно
Timur
Vladislav 👻
😕
Nklya
можно посмотреть в жинже фильтр сортировки для лупа
Vladislav 👻
да, как раз колдую над этим
Vladislav 👻
да, пришлось сортировать лист, т.к. он формируется из словаря инвентори 🙁
Womchik
ppl, а как мне правильно ip из inventory вытащить?
host1 ansible_hostname=192.168.1.1
debug:
var: hostvars['host1'].ansible_hostname
выдаёт host1
Pavel
Pavel
конкретно в данном случае
hostvars['host1']['ansible_default_ipv4']['address']
Timur
Womchik
Timur
Timur
Попробуйте как я сказал
Timur
Womchik
добавлять ещё одну переменную с тем же значением не хочется
Timur
ansible_host на что?
Womchik
ааа. понял
Timur
ansible_hostname ансибл сам задаёт
Warrax
lineinfile?
- name: set hostname in netdata.conf
       lineinfile:
         path: /opt/netdata/etc/netdata/netdata.conf
         regexp: ^#hostname=short_hostname
         insertafter: ^#hostname=short_hostname
         line: hostname = {{ ansible_hostname }}
       notify:
        - Restart NetData
добавляет строку почему-то то в конец файла... где я ошибся?
Tadeusz
не ты первый, у кого lineinfile в конец файла добавляет)
Timur
Womchik
Ruslan
Привет.
Ни кто не сталкивался с проблемой, в ансибле не выполняется таск с установкой обновление пакета pip. Именно в ансибле. Напрямую через Пип пакет ставится, проблема при установке обновлении любого пакета.
Ruslan
Если использовать модуль pip