stanislav
Без отступов
stanislav
ubuntu 16
Ну чудес же не бывает. Если cat возвращает, это не косяк ансибла. Надо копать в какую-то другую сторону.
Maksim
Это у тебя список обычный. Тебе надо две переменные или словарь?
У меня здесь список. Он используется для создания file: path: {{folders}} state: directory И меня это устраивает, можно в любой момент изменить папки в списке и перекомпилить. Но также у меня есть переменная в другом файле, которая от этих папок зависит. Т.е подхватывает имена этих созданных папок.
Maksim
Соответственно надо как то их перечислить для удоства, да еще и переменные присвоить
Maksim
херню сморозил, да?
stanislav
Не совсем понял. Скинешь код обоих тасков?
Maksim
Короче вот у меня один таск, он создает необходимые папки - name: Create a share file: path: "{{ item }}" state: directory mode: '0755' owner: minio-user group: minio-user with_items: "{{ folders }}"
Maksim
И есть у меня вот такая строчка ExecStart=/usr/local/bin/minio server http://{{ url1 }}/{{ folder1 }} http://{{ url1 }}/{{ folder2 }}
Maksim
Т.е в нее включить вот эти созданные папки.
stanislav
А, понял. Тебе словарь нужен
Maksim
А, понял. Тебе словарь нужен
Ссылочку можно? первый раз слышу
Никита
есть плейбук, который прекрасно работает плейбук запушен в гит оттуда его забирает AWX плейбук не видит темплейты лежащие рядом с плейбуком если запускать через AWX
stanislav
Ссылочку можно? первый раз слышу
Ну, словарь. Список из пар ключ:значение. Ща перепишу, скину короче
Никита
Дайте выхлоп tree
это на работе, я дома) просто как обычно это делается хотел спросить, наверное типовая ситуация
checkdiff
И ошибку :) там обычно идет перечисление путей где ищется шаблон
Никита
ну он ищет его там, куда путь в плейбуке ведёт /files/table.sql
Никита
я думал запуск из awx аналогичен обычному запуску ansible-playbook
checkdiff
Maksim
У меня это разграничение как раз по тому, что второй плейбук должен на локалхост софт ставить
stanislav
И еще вот по этому. Вот include_tasks включает только таски, так? Игнорируя в начале нового файла hosts ?
Ни разу не интересовался. Наверное не игнорируя. Это ж по сути общие для тасков свойства просто.
stanislav
И есть у меня вот такая строчка ExecStart=/usr/local/bin/minio server http://{{ url1 }}/{{ folder1 }} http://{{ url1 }}/{{ folder2 }}
Я затупил. Ты же можешь просто вызывать по индексу. Никаие словари тут не нужны. http://{{ url1 }}/{{ folders[0] }} http://{{ url1 }}/{{ folders[1] }} типа такого. Это в шаблоне, который юнит описывает? Там вообще можно сделать цикл по всем значениям в folders, чтобы не менять каждый раз
Maksim
такое через delegate_to: localhost лучше делать
там херня получается таким образом, если это разбирать стороннему человеку он не поймет
Maksim
Ща все затестим, сек
Maksim
такое через delegate_to: localhost лучше делать
Вот такое в консоли TASK [install pip for python] ************************************************************************************************ ok: [node1 -> 127.0.0.1] ok: [node2 -> 127.0.0.1] TASK [install modules for pip] *********************************************************************************************** ok: [node2 -> 127.0.0.1] => (item=minio) ok: [node1 -> 127.0.0.1] => (item=minio) ok: [node1 -> 127.0.0.1] => (item=future) ok: [node2 -> 127.0.0.1] => (item=future) ok: [node2 -> 127.0.0.1] => (item=pytz) ok: [node1 -> 127.0.0.1] => (item=pytz) ok: [node2 -> 127.0.0.1] => (item=python-dateutil) ok: [node1 -> 127.0.0.1] => (item=python-dateutil)
Maksim
Это вместо hosts: localhost
Это вот как Никита предложил, типа Delegate У меня заработало вот так main: - hosts: localhost tasks: - name: install python modules include_tasks: python_localhost.yml python_localhost - name: install pip for python apt: name: python-pip state: latest
stanislav
Это вот как Никита предложил, типа Delegate У меня заработало вот так main: - hosts: localhost tasks: - name: install python modules include_tasks: python_localhost.yml python_localhost - name: install pip for python apt: name: python-pip state: latest
Тебе надо hosts указать те, для которых плейбук пишется. А таски, которые должны выполняться на локалхосте, должны в конце иметь delegate_to: localhost
Maksim
Так, у меня будут еще довольно 3 глупых вопроса
stanislav
тестирую щас [0] [1], для циклов я слишком тупой)
Что-то типа такого должно быть ExecStart=/usr/local/bin/minio server {% for folder in folders %}http://{{ url1 }}/{{ folder }}{% endfor %}
Maksim
у меня сейчас там также , url[0][1][2]
stanislav
Выглядит круто. А как здесь же цикл для url еще сделать?
Если хочешь, напиши завтра, помогу, я уже спать хочу. Там или список со словарями надо, или хз, как. Я так не делал.
Minor
ребят вопрос как сетапнуть можно софт на комп? --- - name: u hosts: all remote_user: root sudo: True tasks: - name: o command: sudo apt-get install vim ошибка fatal: [linux1]: FAILED! => {"ansible_facts": {}, "changed": false, "failed_modules": {"setup": {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "deprecations": [{"msg": "Distribution Ubuntu 16.04 on host linux1 should use /usr/bin/python3, but is using /usr/bin/python for backward compatibility with prior Ansible releases. A future Ansible release will default to using the discovered platform python for this host.
Артём
Вроде должно решиться добавлением ansible_python_interpreter=python3 Заодно я бы переделал с command на модуль apt или package tasks: - name: o command: sudo apt-get install vim -> tasks - name: o package: name: vim state: present
Артём
Minor , у вас ещё и интересный набор remote_user: root sudo: true command: sudo ...
Артём
То есть коннектимся рутом, оттуда судошимся, и на всякий пожарный из-под того sudo ещё sudo выполняем. Хочется вставить картинку со снупдогом.
Minor
То есть коннектимся рутом, оттуда судошимся, и на всякий пожарный из-под того sudo ещё sudo выполняем. Хочется вставить картинку со снупдогом.
Переделал. hosts: all remote_user: root tasks: - name: o package: name: vim state: present Но fatal: [linux1]: FAILED! => {"cache_update_time": 1566050876, "cache_updated": false, "changed": false, "msg": "'/usr/bin/apt-get -y -o \"Dpkg::Options::=--force-confdef\" -o \"Dpkg::Options::=--force-confold\" install 'vim'' failed: E: Could not open lock file /var/lib/dpkg/lock-frontend - open (13: Permission denied)\nE: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), are you root?\n", "rc": 100, "stderr": "E: Could not open lock file /var/lib/dpkg/lock-frontend - open (13: Permission denied)\nE: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), are you root?\n", "stderr_lines": ["E: Could not open lock file /var/lib/dpkg/lock-frontend - open (13: Permission denied)", "E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), are you root?"], "stdout": "", "stdout_lines": []}
Артём
ansible-playbook install_playbook.yml
А если добавить —become ?
Minor
А если добавить —become ?
ansible-playbook install_playbook.yml PLAY [u] *********************************************************************** TASK [Gathering Facts] ********************************************************* ok: [linux1] TASK [o] *********************************************************************** fatal: [linux1]: FAILED! => {"cache_update_time": 1566050876, "cache_updated": false, "changed": false, "msg": "'/usr/bin/apt-get -y -o \"Dpkg::Options::=--force-confdef\" -o \"Dpkg::Options::=--force-confold\" install 'vim'' failed: E: Could not open lock file /var/lib/dpkg/lock-frontend - open (13: Permission denied)\nE: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), are you root?\n", "rc": 100, "stderr": "E: Could not open lock file /var/lib/dpkg/lock-frontend - open (13: Permission denied)\nE: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), are you root?\n", "stderr_lines": ["E: Could not open lock file /var/lib/dpkg/lock-frontend - open (13: Permission denied)", "E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), are you root?"], "stdout": "", "stdout_lines": []} PLAY RECAP ********************************************************************* linux1 : ok=1 changed=0 unreachable=0 failed=1 skipped=0 rescued=0 ignored=0
Minor
А если добавить —become ?
Ставить его нужно после хостс?
Артём
Ставить его нужно после хостс?
В командной строке после ansible-playbook в любом месте. А если вот такой вариант запустить? - hosts: localhost tasks: - name: whoami command: whoami register: command_output - name: DBG debug: msg: '{{ command_output.stdout }}'
Артём
И сравнить вывод с вариантом с remote_user: root
Minor
И сравнить вывод с вариантом с remote_user: root
ansible-playbook install_playbook.yml PLAY [u] *************************************************************************************************************************************** TASK [Gathering Facts] ************************************************************************************************************************* ok: [linux1] TASK [whoami] ********************************************************************************************************************************** changed: [linux1] TASK [DBG] ************************************************************************************************************************************* ok: [linux1] => { "msg": "tima" } PLAY RECAP ************************************************************************************************************************************* linux1 : ok=3 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Артём
****************** ok: [linux1] => { "msg": "tima" Это с remote_user: root ?
Артём
Вместо этого become: true
Minor
Вместо этого become: true
hosts: all become: true tasks: - name: whoami command: whoami register: command_output - name: DBG debug: msg: '{{ command_output.stdout }}'
Minor
************************************************************************************************************************* fatal: [linux1]: FAILED! => {"ansible_facts": {}, "changed": false, "failed_modules": {"setup": {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "deprecations": [{"msg": "Distribution Ubuntu 16.04 on host linux1 should use /usr/bin/python3, but is using /usr/bin/python for backward compatibility with prior Ansible releases. A future Ansible release will default to using the discovered platform python for this host. See https://docs.ansible.com/ansible/2.8/reference_appendices/interpreter_discovery.html for more information", "version": "2.12"}], "failed": true, "module_stderr": "Shared connection to 192.168.56.128 closed.\r\n", "module_stdout": "sudo: слід вказати пароль\r\n", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 1}}, "msg": "The following modules failed to execute: setup\n"} PLAY RECAP ************************************************************************************************************************************* linux1 : ok=0 changed=0 unreachable=0 failed=1 skipped=0 rescued=0 ignored=0
Артём
- hosts: localhos become: true ansible_python_interpreter=python3
Minor
- hosts: localhos become: true ansible_python_interpreter=python3
Как только закидываю ansible_python_interpreter=python3 получаю The offending line appears to be: tasks: ^ here hosts: all become: true ansible_python_interpreter=python3 tasks: - name: whoami
Артём
ansible_python_interpreter=python3 - прямо в ansible.cfg отправить.
Minor
ansible_python_interpreter=python3 - прямо в ansible.cfg отправить.
[defaults] ansible_python_interpreter=python3 host_key_checking = false inventory = ./hosts.txt таже ошибка.
Артём
[defaults] ansible_python_interpreter=python3 host_key_checking = false inventory = ./hosts.txt таже ошибка.
А в какой момент оно перестало ругаться на интерпретатор и начало на то, что Permission denied?
Sergey
А зачем он кодирует в base64? Экранирование?
Модуль при вытягивании файла с удалённого хоста кодирует в base64 потому, что на удалённом хосте файл имеет полное право быть бинарным. Но позволю себе озвучить очень простое соображение: если нужны такие действия - инфраструктура не иммутабельна, сценарий не идемпотентен, а автор башсибла, где такой модуль используется - ССЗБ.
Sergey
ребята а не кто не делал роль для создание пользователя с генерация ключей (приватный ключь должен остатся делагате чтобы я мог его отдать пользователю!) а публичный расскать по всем машинами
Я делал, ldap_client называется. Ключи конкретного пользователя автомагически доступны на всех машинах, у которых есть связь с LDAP-сервером, и к которым выдан доступ с данного хоста.
Никита
зачем freeipa форкать?
George
?
Имеется в виду - зачем имплементировать кривой фриипа из ансибла, если можно взять фриипа настоящий и подключить лдап
Sergey
Имеется в виду - зачем имплементировать кривой фриипа из ансибла, если можно взять фриипа настоящий и подключить лдап
Лол. А кто говорил про форк? <....Здесь был длинный ответ, я его в @ru_ldap скинул, т.к. он больше по теме того чата....>
Sergey
Xander сутки отдыха от чата (набросы, оффтопик)
Sergey
или сразу же ставить ansible на python3
А это не поможет, т.к. речь о целевой тачке, куда Ansible подключается.
Артём
Что-а? 🤷‍♂
Орёт, но работает. По крайней мере, у вопрошавшего завелось, когда пофиксили остальные особенности. Можете поднять 16.04 и проверить, я поленился.