Alex
- name: Check if PostgreSQL server is available
postgresql_ping:
db: "{{ jfmc_db_name }}"
login_host: "{{ hostvars['app_eplus']['private_ip'] }}"
login_user: "{{ jfmc_db_username }}"
login_password: "{{ jfmc_db_password }}"
register: check_postgresql_server
until: check_postgresql_server.is_available
retries: 3
delay: 10
а как понять, почему фейлится таск?
TASK [itests/jfmc : Check if PostgreSQL server is available] ***
fatal: [app_master]: FAILED! =>
msg: 'The conditional check ''check_postgresql_server.is_available'' failed. The error was: error while evaluating conditional (check_postgresql_server.is_available): ''dict object'' has no attribute ''is_available'''
...ignoring
Alex
я понимаю, что его там нет, но вопрос почему
Alex
точнее я даже догадываюсь почему, но из ошибки это не следует
Alex
is_available это ключ словаря
Alex
ok: [app_master] => changed=false
ansible_facts:
discovered_interpreter_python: /usr/bin/python
attempts: 1
is_available: true
server_version:
major: 9
minor: 6
Lamobot
debug: var=check_postgresql_server ?
Alex
выше был выхлоп
Alex
debug: var=check_postgresql_server ?
TASK [itests/jfmc : debug] ***
ok: [app_master] =>
check_postgresql_server:
failed: true
msg: 'The conditional check ''check_postgresql_server.is_available'' failed. The error was: error while evaluating conditional (check_postgresql_server.is_available): ''dict object'' has no attribute ''is_available'''
Alex
по ходу until надо переписать на
until: >-
check_postgresql_server.is_available is defined
and check_postgresql_server.is_available
Alex
тогда появляется осмысленное сообщение об ошибке
failed: true
msg: Failed to import the required Python library (psycopg2) on itests-fdbe-master's Python /usr/bin/python. Please read module documentation and install in the appropriate location. If the required library is installed, but Ansible is using the wrong Python interpreter, please consult the documentation on ansible_python_interpreter
Vlad
проще поставить готовый пакет операционной системы а не компилировать
Alex
Vlad
надо ставить через менеджер пакетов ос а не через pip. бинарные пакеты pip не статически собраны и требуют зависимостей
Vlad
может потому-что под python 2.6 никто уже не собирает бинарные пакеты
Alex
Sergey
Alex
Sergey
Sergey
В общем, питонячьи пакеты, которые являются обёртками вокруг бинарных сишных либ - зло.
Sergey
Я пробовал потыкаться в код на тему "выбросить psycopg2 и использовать pg8000", но что-то сходу не срослось. Судя по всему, задача ещё ждёт своего героя.
Alex
Alex
ELS will be available for Red Hat Enterprise Linux 6 starting with its retirement (November 30, 2020) until June 30, 2024.
еще вопросы будут? )))
Alex
Ынтерпрайз он такой - суровый и безпощадный
Sergey
откройте для себя ESL
По корпоративной полиси у меня нельзя настолько древние версии - вне зависимости от из поддерживаемости.
"....Ынтерпрайз он такой - суровый и безпощадный...." (С)
А вопросов и не было, скорее ответ про существующий Python-only драйвер постгреса, под который придётся свой модуль для Ansible написать :-)
Alex
> По корпоративной полиси у меня нельзя настолько древние версии - вне зависимости от из поддерживаемости.
что я могу сказать - везет вам )))
Ilya
Подскажет кто как тестит свои роли. Пишу роль в vs code, как удобней всего проверить работает ли роль?
Сейчас, в vs code стоит ansible модуль, через который можно запустить пб через ssh на машине с ssh, но он именно раннит пб, а хочется чтобы запускался с ключом --syntax-check
Lev
Гайрат
Lev
Гайрат
ага
Lev
Aleksey
снова спрошу. вдруг кто новый сможет ответить https://stackoverflow.com/questions/61569004/molecule-dependency-in-private-gitlab
Lev
Lev
мы примерно также с gitblit делали
Aleksey
ввязался в sh — где то не прав
Lev
а ssh ключ уже предлагали положить? чем это плохо?
Aleksey
Aleksey
хм. еще интересное решение предложили https://github.com/ansible/ansible/issues/36395#issuecomment-623452128
Aleksey
Aleksey
на теги
Ya
парни как сделать list из ansible_host ?
Ya
если делаю join(', ') он разделяет посимвольно :(
Lamobot
Alex
Ya
Lamobot
Ya
Ya
я чет не могу отдуплить как из строки делать списки
Ya
я может как то неправильно готовлю энсибл, но логика мне подсказывает, что надо прост записать итемы в список
Alex
нужен список айпи из группы инвентори
и?
- name: Wait instances to be ready
shell: |
ssh -i {{ lookup('config', 'DEFAULT_PRIVATE_KEY_FILE') }} \
-o UserKnownHostsFile=/dev/null \
-o StrictHostKeyChecking=no \
ansible@{{ hostvars[item]['ansible_host'] }} hostname
loop: "{{ groups['all'] }}"
register: ssh_login_status
until: ssh_login_status is succeeded
retries: 5
delay: 10
Ya
Alex
у вас в группе групалл находится список хостнеймов, мне нужны айпи адреса
там ip
$ cat inventory/hosts.ini
[master]
app_master ansible_host=35.205.xxx.xxx ansible_user=ansible private_ip=10.0.7.24 node_name=itests-a162-master
[slave]
app_slave ansible_host=34.76.xxx.xxx ansible_user=ansible private_ip=10.0.7.26 node_name=itests-a162-slave
[eplus]
app_eplus ansible_host=34.76.xxx.xxx ansible_user=ansible private_ip=10.0.7.23 node_name=itests-a162-eplus
Ya
Alex
на выходе будет
TASK [debug] ***
ok: [localhost] =>
msg:
- 35.190.xxx.xxx
- 34.76.xxx.xxx
- 35.233.xxx.xxx
- 34.77.xxx.xxx
Lamobot
Alex
Ya
вот чисто интересно если просто так оставить без .split(',') | list то магия списка пропадает
Lamobot
Ya
Ya
тоесть само формирование списка происходит каждый раз, неужели нет просто способа делать список из строк ?
Ya
Ya
Ya
Чьорт работает )
Ya
Тут как в том анекдоте, у программиста всего один вопрос, работает - почему, не работает - почему :)
Lamobot
А двойные одиночные - это просто экранирование кавычек
Ya