Dr. L.S.Dee
Но АД надо чинить, да.
Александр
добро пожаловать в АД(с)
Max
Превед. У меня тут интересная шляпа, может сталкивался кто? debug отрабатывает норм, а при попытке сохранить вываливается с ошибкой "msg": "Failed to get information on remote file (/etc/elasticsearch/{'ansible_loop_var': u'item', 'failed': False, u'encoding': u'base64', 'changed': False, u'content': u'LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURTVENDQWpHZ0F3SUJBZ0lVRU5lZFgrTU1uT2RwbGJnS0R0YzUwRDdsbWRNd0RRWUpLb1pJaHZjTkFRRUwKQlFBd05ERXlNREFHQTFVRUF4TXBSV3hoYzNScFl5QkRaWEowYVdacFkyRjBaU0JVYjI5c0lFRjFkRzluWlc1bApjbUYwWldRZ1EwRXdIaGNOTVRreE1URTFNVGN6T1RVeVdoY05NalF4TVRFek1UY3pPVFV5V2pBME1USXdNQVlEClZRUURFeWxGYkdGemRHbGpJRU5sY25ScFptbGpZWFJsSUZSdmIyd2dRWFYwYjJkbGJtVnlZWFJsWkNCRFFUQ0MKQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFLT1JlTE5uZ09zVnorYndsYWM0QWJyMgo4Y2tRSW1yTEkyV0FwcUh4blRPRVhkWWhmOTVpTkJDdjR6ZnJQeFp6SmZwcHJ3azVOYndhNTFGaFNkLzJTOVZhCkxjMTMxSHZXYTFaTWRMQk1admFrTVFpc3h4SFpUZk05MDJpNjZObzdRU0VZTnVjbkE3VFBhbjV5bHlUZWVDOHkKMlBhbXc2ZGwrVE9zWHBWT1NEeGV2YStzdUcxZlI1QUdtWHA3bG12OXQra3psT1lsSW5CTzNHZGo5YmtJWFhyaApNTXVqZTdjeXM1djN5aFNld2tmczVLb2ZQVEZzZ01VZnJvaDFlZmJxZmpoS2dZS3lIczdDSHVzUUJ5K252T0NxCkhGbUJKRjVTNFNHZ3lJKzJaaFRyRmV4Y3BtazFqcVFMVSs3YnArOVBMK1FOMGZVVXpzTlB1UGZON05NUk4rOEMKQXdFQUFhTlRNRkV3SFFZRFZSME9CQllFRkFrZGdsSGppamFLeWJCVUFBK0JpRzczUUYwek1COEdBMVVkSXdRWQpNQmFBRkFrZGdsSGppamFLeWJCVUFBK0JpRzczUUYwek1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0RRWUpLb1pJCmh2Y05BUUVMQlFBRGdnRUJBQkpEZ1I5NStJU2F2c0gxeUpJeENOckpQZm9CdUhzVmZxWUM2a1NPNGI5WFAwblUKMm1uaHVZaDI4YzgyZWtPNzhWTW9GNDZpMVB3VmFDNHJqTGx0eUVkNFBqMUhYeFVidHVxVXdINmxHVkxrUWl6cgozYmFUandWZzB2bEFTNHBjcGY5WG9jcXRkQ3FaeEJMa2taQ2YvTHF2N2NMdGV0U0ZuVFdYT3F0UFdCYTF6VktrCjl4clJRaTc4aXExWmZkWSt6TUpqY0pPMXlTWktzaVVNK3R6czhlelpFdXlnSVZ4SGMrS1VpT2QvS1RqSFpOQ2UKRnUzTDNRZk5NWTFkUGFUdmJ3dmhqUzJLemtUK0NyOUQybkh0VzlwUkwwU3NzYzRJU3hBTVRkSW5YeGpCdnEwTQp2eVZJRnhuRHhobE5kaUhCVDZXdVU3cGllclZiaHhLQVg1SjV3dms9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K', u'source': u'/etc/elasticsearch/cert/ca.crt', 'item': u'ca.crt', u'invocation': {u'module_args': {u'src': u'/etc/elasticsearch/cert/ca.crt'}}}): File name too long"
Max
Таски - name: register ca crt & key slurp: src: "/etc/elasticsearch/cert/{{ item }}" loop: - "ca.crt" - "ca.key" register: ca - name: just echo debug: msg: "({{ item['content'] | b64decode }})" loop: "{{ ca.results }}" - name: save ca crt & key on "{{ inventory_hostname }}" copy: dest: "/etc/elasticsearch/{{ item }}" content: "({{ item['content'] | b64decode }})" owner: elasticsearch group: elasticsearch mode: 0600 loop: "{{ ca.results }}"
Max
Куда копать?)
Max
мде. уточка в действии - увидел. dest должен быть item.name или типо того
Timur
мде. уточка в действии - увидел. dest должен быть item.name или типо того
Да, там в dest явно словарь передается вместо нормального значения конкретного ключа
Max
так заработало) - name: save ca crt & key on "{{ inventory_hostname }}" copy: dest: "/etc/elasticsearch/{{ item.source | basename }}" content: "({{ item['content'] | b64decode }})" owner: elasticsearch group: elasticsearch mode: 0600 loop: "{{ ca.results }}"
igi
всем привет есть ли возможность укзать лимит для плейбуки по такскам, и для каждой такски лимит по хостам?
Max
больше ничего такого не помню
igi
вообщем хочется автоматизировать буталку сервисов хочу написать плейбук который может бутнуть все сервисы и на всех серверах а лимитом выбирать какие сервисы и на каких сервера
Timur
И в чем проблема?
Timur
Все это можно через инвентарь задавать
Max
эм, если лимит качественный, а не количественный, то делите на группы и применяйте разные команды для разных групп
Timur
Или через внешние переменные
Max
можно использовать https://docs.ansible.com/ansible/latest/user_guide/playbooks_blocks.html
igi
разрые сервисы на разных серверах тоесть сервис 1, 2, 3 НА серверах 1 и 2 сервис 4 и 5 на сервере 3 сервис 6 на всех например нужно бутнуть сервсис 2 и 3 на сервере 1 и сервис 6 на на 1 и 3 сервере
Max
Попробуйте. предпологаю, что да. я на блок вешаю deletage_to, when. остальные conditions вероятно тоже можно
Max
Пожалуйста)
Artem
Добрый день! Подскажите как могу увеличить размер оперативной памяти для отдельно взятого докер контейнера?
Gleb
так же как и ограничивали
Anton
- name: Create sonarqube scripts directory file: path: /home/ubuntu/sonar-testtttttttt state: directory owner: ubuntu group: ubuntu mode: 0755 recurse: yes Есть сценарий который выполняет разные роли на разных серверах. Как то можно заставить выполнить часть тасок определенной роли на сервере 1 а остальные на сервере 2 ????
Max
@tgadiev может подскажешь? генерирую из тимплейта список с аргументами. basename у них нет, увы. есть какой то аналог inventory_hostname_short? или как-то jinj-ой обрезать fqdn до первой части имени? instances: {% for item in groups['elastic_int'] %} - name: {{ item.basename }} dns: {{ item }} {% endfor %} {% for item in groups['kibana'] %} - name: {{ item.basename }} dns: {{ item }} {% endfor %}
Anton
- name: Create sonarqube scripts directory file: path: /home/ubuntu/sonar-testtttttttt state: directory owner: ubuntu group: ubuntu mode: 0755 recurse: yes when: inventory_hostname == "node" [master] 192.168.33.20 ansible_ssh_user=root ansible_python_interpreter=/usr/bin/python3 [node] 192.168.33.10 ansible_ssh_user=root ansible_python_interpreter=/usr/bin/python3 TASK [sonarqube : Create sonarqube scripts directory] skipping: [192.168.33.20] Почему скипает ?
Anton
Конкретнее можно?
что именно конкретнее?
Max
@tgadiev опять уточка рабоате блин. вспомнил про {{ ansible_hostname.split('-')[0] }}
Anton
ansible-playbook sonarqube.yml запускаю так cat sonarqube.yml - name: Sonarqube Installing hosts: master vars_files: - ./vars.yml gather_facts: yes become: true become_user: root tags: sonarqube roles: - { role: sonarqube, tags: sonarqube }
Max
Что именно вы хотите сделать?
да уже сообразил. мне нужно в списке первую часть inventroy_hostname, они у меня fqdn
Timur
что именно конкретнее?
Зачем часть тасков на одной ноде, а часть - на другой?
Timur
И какая именно часть?
Timur
как лучше?
Группы юзать нормально и плеи
Anton
Зачем часть тасков на одной ноде, а часть - на другой?
просто нужно сделать так что бы в роли часть тасок выполнялась на сервере 1 а другая часть на сервере 2. что бы создавать 2 роли отдельные
Max
Группы юзать нормально и плеи
разбить на несколько ролей конечно лучше. но бывает не логично дробить роль как одну логическую сущность. я тогда добавляю условия принадлежности к группе или по имени хоста
Anton
Скорее две роли нужно
если не получится то приделся 2 пилить ))
Max
можно сделать внутри роли два файла tasks1.yml & tasks2.yml и инклюдить их в main.yml по условию
Timur
Если же нужно просто отключать часть тасков на определённых хостах, то можно повесить на них условия по определённой переменной. А саму переменную назначать по группам
Timur
разбить на несколько ролей конечно лучше. но бывает не логично дробить роль как одну логическую сущность. я тогда добавляю условия принадлежности к группе или по имени хоста
Нет, это плохо. Лучше по конкретной переменной-триггеру. А ее уже можно определять хоть через группы, хоть через хосты
Max
Нет, это плохо. Лучше по конкретной переменной-триггеру. А ее уже можно определять хоть через группы, хоть через хосты
почему? фактически это всё та же привязка к группе, но логика сложнее и доп сущность "триггер".
Anonymous
А что не так?
Max
- import_tasks: client.yml when: '"nomad_clients" in group_names'
эм, я обычно наоборот делаю) inventory_hostname in groups["groupname"]
Timur
почему? фактически это всё та же привязка к группе, но логика сложнее и доп сущность "триггер".
Нет, триггер вы можете определять где угодно. И роль не будет зависеть от инвентаря
Max
Нет, триггер вы можете определять где угодно. И роль не будет зависеть от инвентаря
с этой точки зрения согласен) не дошел еще до такого уровня универсальности)
Timur
А что не так?
Да сто раз уже объяснялось же
Timur
Это масло масляное
Timur
Для ограничения выполнения тасков по группам есть плей
Max
Это масло масляное
в плане в плейбуке определяется группа для которой он запускается и потом сравнение избыточно? я использую довольно часто [groupname:children] для общих частей, а разные по подгруппе.
Max
и получается удобно сравнивать по принадлежности хоста к подгруппе.
Max
play кстати не пробовал
Max
Удобно пока инвентарь не поменялся
в рамках проекта он не меняется уже третий год)
Timur
И плейбука оказывается тоже жестко к инвентарю прибитой
Max
И плейбука оказывается тоже жестко к инвентарю прибитой
с точки зрения reusable согласен, но пока не актуально
Max
Вот выше спрашивал. Откуда этот код из какой роли? Или это в плейбуке делается?
это разовое действие - генерация первичного списка нод elk кластера, по списку будут сгенерены p12 серты на одной машине, дальше slurp-ом их читаю и раскладываю по нодам
Timur
в роле установки elastic-а.
Что за роль? Откуда?
Max
Что за роль? Откуда?
В смысле откуда? Сижу, пишу)
Timur
Чем не устраивают имеющиеся?