2016-09-22 3 views
4

Я пытаюсь запустить приложение, но он зависает при настройке. моя тетрадь делает много работы, как вызов разных ролей и модулей, и она собирает факты. Он работал отлично раньше, но теперь я не уверен, что пошло не так, любая помощь приветствуетсяВзаимозависимая игра-книжка зависает при настройке

  • операционной системы хоста RHEL 7
  • беспарольной аутентификации SSH устанавливаются между этими системами
  • моего файла инвентаризацией содержит только один хост-система

команда, которую я бегала был

ansible-playbook -i /tmp/tmpBo5Xmj -vvvvv playbook.yml -c ssh 

вот подробный журнал

TASK [setup] ******************************************************************* 
<172.17.239.193> ESTABLISH SSH CONNECTION FOR USER: ansible 
<172.17.239.193> SSH: ansible.cfg set ssh_args: (-o)(UserKnownHostsFile=/dev/null)(-o)(StrictHostKeyChecking=no) 
<172.17.239.193> SSH: ANSIBLE_HOST_KEY_CHECKING/host_key_checking disabled: (-o)(StrictHostKeyChecking=no) 
<172.17.239.193> SSH: ansible_password/ansible_ssh_pass not set: (-o)(KbdInteractiveAuthentication=no)(-o)(PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey)(-o)(PasswordAuthentication=no) 
<172.17.239.193> SSH: ANSIBLE_REMOTE_USER/remote_user/ansible_user/user/-u set: (-o)(User=ansible) 
<172.17.239.193> SSH: ANSIBLE_TIMEOUT/timeout set: (-o)(ConnectTimeout=10) 
<172.17.239.193> SSH: PlayContext set ssh_common_args:() 
<172.17.239.193> SSH: PlayContext set ssh_extra_args:() 
<172.17.239.193> SSH: EXEC ssh -C -vvv -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=ansible -o ConnectTimeout=10 172.17.239.193 '/bin/sh -c '"'"'(umask 77 && mkdir -p "` echo $HOME/.ansible/tmp/ansible-tmp-1474582282.38-93511913696801 `" && echo ansible-tmp-1474582282.38-93511913696801="` echo $HOME/.ansible/tmp/ansible-tmp-1474582282.38-93511913696801 `") && sleep 0'"'"'' 
<172.17.239.193> PUT /tmp/tmpAKnqv6 TO /home/ansible/.ansible/tmp/ansible-tmp-1474582282.38-93511913696801/setup 
<172.17.239.193> SSH: ansible.cfg set ssh_args: (-o)(UserKnownHostsFile=/dev/null)(-o)(StrictHostKeyChecking=no) 
<172.17.239.193> SSH: ANSIBLE_HOST_KEY_CHECKING/host_key_checking disabled: (-o)(StrictHostKeyChecking=no) 
<172.17.239.193> SSH: ansible_password/ansible_ssh_pass not set: (-o)(KbdInteractiveAuthentication=no)(-o)(PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey)(-o)(PasswordAuthentication=no) 
<172.17.239.193> SSH: ANSIBLE_REMOTE_USER/remote_user/ansible_user/user/-u set: (-o)(User=ansible) 
<172.17.239.193> SSH: ANSIBLE_TIMEOUT/timeout set: (-o)(ConnectTimeout=10) 
<172.17.239.193> SSH: PlayContext set ssh_common_args:() 
<172.17.239.193> SSH: PlayContext set sftp_extra_args:() 
<172.17.239.193> SSH: EXEC sftp -b - -C -vvv -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=ansible -o ConnectTimeout=10 '[172.17.239.193]' 
<172.17.239.193> ESTABLISH SSH CONNECTION FOR USER: ansible 
<172.17.239.193> SSH: ansible.cfg set ssh_args: (-o)(UserKnownHostsFile=/dev/null)(-o)(StrictHostKeyChecking=no) 
<172.17.239.193> SSH: ANSIBLE_HOST_KEY_CHECKING/host_key_checking disabled: (-o)(StrictHostKeyChecking=no) 
<172.17.239.193> SSH: ansible_password/ansible_ssh_pass not set: (-o)(KbdInteractiveAuthentication=no)(-o)(PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey)(-o)(PasswordAuthentication=no) 
<172.17.239.193> SSH: ANSIBLE_REMOTE_USER/remote_user/ansible_user/user/-u set: (-o)(User=ansible) 
<172.17.239.193> SSH: ANSIBLE_TIMEOUT/timeout set: (-o)(ConnectTimeout=10) 
<172.17.239.193> SSH: PlayContext set ssh_common_args:() 
<172.17.239.193> SSH: PlayContext set ssh_extra_args:() 
<172.17.239.193> **SSH: EXEC ssh -C -vvv -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=ansible -o ConnectTimeout=10 -tt 172.17.239.193 '/bin/sh -c '"'"'sudo -H -S -n -u root /bin/sh -c '"'"'"'"'"'"'"'"'echo BECOME-SUCCESS-njtihbebdvbpospbpivnpwbhrqtnfylc; LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /home/ansible/.ansible/tmp/ansible-tmp-1474582282.38-93511913696801/setup; rm -rf "/home/ansible/.ansible/tmp/ansible-tmp-1474582282.38-93511913696801/" > /dev/null 2>&1'"'"'"'"'"'"'"'"' && sleep 0'"'"''** 

На целевой системе, которую я мог видеть следующий процесс питона работает

[[email protected] ~]# ps -ef | grep python| grep ansible 
ansible 12600 12568 0 07:18 pts/0 00:00:00 /bin/sh -c sudo -H -S -p "[sudo via ansible, key=tdtazugynuyekapktrkwjrwuawfvgkme] password: " -u root /bin/sh -c 'echo BECOME-SUCCESS-tdtazugynuyekapktrkwjrwuawfvgkme; LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /home/ansible/.ansible/tmp/ansible-tmp-1474582204.64-194542154309618/setup; rm -rf "/home/ansible/.ansible/tmp/ansible-tmp-1474582204.64-194542154309618/" > /dev/null 2>&1' && sleep 0 
root  12613 12600 0 07:18 pts/0 00:00:00 sudo -H -S -p [sudo via ansible, key=tdtazugynuyekapktrkwjrwuawfvgkme] password: -u root /bin/sh -c echo BECOME-SUCCESS-tdtazugynuyekapktrkwjrwuawfvgkme; LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /home/ansible/.ansible/tmp/ansible-tmp-1474582204.64-194542154309618/setup; rm -rf "/home/ansible/.ansible/tmp/ansible-tmp-1474582204.64-194542154309618/" > /dev/null 2>&1 
root  12614 12613 0 07:18 pts/0 00:00:00 /bin/sh -c echo BECOME-SUCCESS-tdtazugynuyekapktrkwjrwuawfvgkme; LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /home/ansible/.ansible/tmp/ansible-tmp-1474582204.64-194542154309618/setup; rm -rf "/home/ansible/.ansible/tmp/ansible-tmp-1474582204.64-194542154309618/" > /dev/null 2>&1 
root  12615 12614 0 07:18 pts/0 00:00:00 /usr/bin/python /home/ansible/.ansible/tmp/ansible-tmp-1474582204.64-194542154309618/setup 
root  12616 12615 0 07:18 pts/0 00:00:00 /usr/bin/python /tmp/ansible_0loivr/ansible_module_setup.py 
ansible 15436 15435 0 07:20 pts/1 00:00:00 /bin/sh -c sudo -H -S -n -u root /bin/sh -c 'echo BECOME-SUCCESS-njtihbebdvbpospbpivnpwbhrqtnfylc; LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /home/ansible/.ansible/tmp/ansible-tmp-1474582282.38-93511913696801/setup; rm -rf "/home/ansible/.ansible/tmp/ansible-tmp-1474582282.38-93511913696801/" > /dev/null 2>&1' && sleep 0 
root  15449 15436 0 07:20 pts/1 00:00:00 sudo -H -S -n -u root /bin/sh -c echo BECOME-SUCCESS-njtihbebdvbpospbpivnpwbhrqtnfylc; LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /home/ansible/.ansible/tmp/ansible-tmp-1474582282.38-93511913696801/setup; rm -rf "/home/ansible/.ansible/tmp/ansible-tmp-1474582282.38-93511913696801/" > /dev/null 2>&1 
root  15450 15449 0 07:20 pts/1 00:00:00 /bin/sh -c echo BECOME-SUCCESS-njtihbebdvbpospbpivnpwbhrqtnfylc; LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /home/ansible/.ansible/tmp/ansible-tmp-1474582282.38-93511913696801/setup; rm -rf "/home/ansible/.ansible/tmp/ansible-tmp-1474582282.38-93511913696801/" > /dev/null 2>&1 
root  15451 15450 0 07:20 pts/1 00:00:00 /usr/bin/python /home/ansible/.ansible/tmp/ansible-tmp-1474582282.38-93511913696801/setup 
root  15452 15451 0 07:20 pts/1 00:00:00 /usr/bin/python /tmp/ansible_PJZfVt/ansible_module_setup.py 

Вот простой сборник пьес, где я поставил стать: да и become_user: корень, как-то когда я устанавливаю стал: да это не работает, он висит

- name: list files in target system 
    hosts: clonedb 
    user: ansible 
    become: yes 
    become_user: root 
    gather_facts: yes 
    tasks: 
    - name: list files in target system 
    command: ls 
    always_run: true 
    tags: list 

если я Закомментируйте стать и become_user он работает отлично. Я добавил пользователя анзибль в список sudoers в целевой системе, но до сих пор она висит

на целевой системе «анзибль» пользователь я дал разрешение SUDO, добавив его в список sudoers

ansible   ALL=(ALL)  NOPASSWD: ALL 

я стараюсь выполнить команду Суда как анзибль пользователя на целевой системе он работает отлично

[[email protected] ~]$ sudo ls ~root 
anaconda-ks.cfg cvuqdisk-1.0.9-1.rpm install.log install.log.syslog remove_disk.sh 

Но на другую систему он работает отлично

(virtualapp) [[email protected] lib]$ python odcansible.py 
sys path:['/home/ansible/virtualapp/pypi_portal/lib', '/home/ansible/virtualapp/lib64/python27.zip', '/home/ansible/virtualapp/lib64/python2.7', '/home/ansible/virtualapp/lib64/python2.7/plat-linux2', '/home/ansible/virtualapp/lib64/python2.7/lib-tk', '/home/ansible/virtualapp/lib64/python2.7/lib-old', '/home/ansible/virtualapp/lib64/python2.7/lib-dynload', '/usr/lib64/python2.7', '/usr/lib/python2.7', '/home/ansible/virtualapp/lib/python2.7/site-packages'] 
PLAY [create temporary directory in target system] ***************************** 

TASK [setup] ******************************************************************* 
<172.17.58.95> ESTABLISH SSH CONNECTION FOR USER: ansible 
<172.17.58.95> SSH: ansible.cfg set ssh_args: (-o)(UserKnownHostsFile=/dev/null)(-o)(StrictHostKeyChecking=no)(-o)(IdentitiesOnly=yes)(-o)(ControlMaster=auto)(-o)(ControlPersist=60s) 
<172.17.58.95> SSH: ANSIBLE_HOST_KEY_CHECKING/host_key_checking disabled: (-o)(StrictHostKeyChecking=no) 
<172.17.58.95> SSH: ANSIBLE_REMOTE_USER/remote_user/ansible_user/user/-u set: (-o)(User=ansible) 
<172.17.58.95> SSH: ANSIBLE_TIMEOUT/timeout set: (-o)(ConnectTimeout=10) 
<172.17.58.95> SSH: found only ControlPersist; added ControlPath: (-o)(ControlPath=/home/ansible/.ansible/cp/ansible-ssh-%h-%p-%r) 
<172.17.58.95> SSH: EXEC sshpass -d14 ssh -C -vvv -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o IdentitiesOnly=yes -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o User=ansible -o ConnectTimeout=10 -o ControlPath=/home/ansible/.ansible/cp/ansible-ssh-%h-%p-%r 172.17.58.95 '/bin/sh -c '"'"'(umask 77 && mkdir -p "` echo $HOME/.ansible/tmp/ansible-tmp-1474661320.71-273658467725557 `" && echo ansible-tmp-1474661320.71-273658467725557="` echo $HOME/.ansible/tmp/ansible-tmp-1474661320.71-273658467725557 `") && sleep 0'"'"'' 
<172.17.58.95> PUT /tmp/tmpITvUgQ TO /home/ansible/.ansible/tmp/ansible-tmp-1474661320.71-273658467725557/setup 
<172.17.58.95> SSH: disable batch mode for sshpass: (-o)(BatchMode=no) 
<172.17.58.95> SSH: ansible.cfg set ssh_args: (-o)(UserKnownHostsFile=/dev/null)(-o)(StrictHostKeyChecking=no)(-o)(IdentitiesOnly=yes)(-o)(ControlMaster=auto)(-o)(ControlPersist=60s) 
<172.17.58.95> SSH: ANSIBLE_HOST_KEY_CHECKING/host_key_checking disabled: (-o)(StrictHostKeyChecking=no) 
<172.17.58.95> SSH: ANSIBLE_REMOTE_USER/remote_user/ansible_user/user/-u set: (-o)(User=ansible) 
<172.17.58.95> SSH: ANSIBLE_TIMEOUT/timeout set: (-o)(ConnectTimeout=10) 
<172.17.58.95> SSH: found only ControlPersist; added ControlPath: (-o)(ControlPath=/home/ansible/.ansible/cp/ansible-ssh-%h-%p-%r) 
<172.17.58.95> SSH: EXEC sshpass -d14 sftp -o BatchMode=no -b - -C -vvv -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o IdentitiesOnly=yes -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o User=ansible -o ConnectTimeout=10 -o ControlPath=/home/ansible/.ansible/cp/ansible-ssh-%h-%p-%r '[172.17.58.95]' 
<172.17.58.95> ESTABLISH SSH CONNECTION FOR USER: ansible 
<172.17.58.95> SSH: ansible.cfg set ssh_args: (-o)(UserKnownHostsFile=/dev/null)(-o)(StrictHostKeyChecking=no)(-o)(IdentitiesOnly=yes)(-o)(ControlMaster=auto)(-o)(ControlPersist=60s) 
<172.17.58.95> SSH: ANSIBLE_HOST_KEY_CHECKING/host_key_checking disabled: (-o)(StrictHostKeyChecking=no) 
<172.17.58.95> SSH: ANSIBLE_REMOTE_USER/remote_user/ansible_user/user/-u set: (-o)(User=ansible) 
<172.17.58.95> SSH: ANSIBLE_TIMEOUT/timeout set: (-o)(ConnectTimeout=10) 
<172.17.58.95> SSH: found only ControlPersist; added ControlPath: (-o)(ControlPath=/home/ansible/.ansible/cp/ansible-ssh-%h-%p-%r) 
<172.17.58.95> SSH: EXEC sshpass -d14 ssh -C -vvv -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o IdentitiesOnly=yes -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o User=ansible -o ConnectTimeout=10 -o ControlPath=/home/ansible/.ansible/cp/ansible-ssh-%h-%p-%r -tt 172.17.58.95 '/bin/sh -c '"'"'sudo -H -S -p "[sudo via ansible, key=wcazqfwywctzrpesmznhbpbibluqmkqg] password: " -u root /bin/sh -c '"'"'"'"'"'"'"'"'echo BECOME-SUCCESS-wcazqfwywctzrpesmznhbpbibluqmkqg; LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /home/ansible/.ansible/tmp/ansible-tmp-1474661320.71-273658467725557/setup; rm -rf "/home/ansible/.ansible/tmp/ansible-tmp-1474661320.71-273658467725557/" > /dev/null 2>&1'"'"'"'"'"'"'"'"' && sleep 0'"'"'' 
ok: [172.17.58.95] 
+0

Кажется странным, что 'sudo' работает, учитывая, что он все еще находится на этапе настройки. Но это заставляет меня думать, что проблема на самом деле связана с вашей настройкой sudoers. –

ответ

0

Не могли бы вы прояснить свой вопрос?

Вы заявляете, что ваша цель - собрать факты о хосте, но ваша плей-панель не отражает этого.

Если ваша единственная цель - собрать факты о хосте, вы можете использовать модуль настройки для этой задачи. Вы также не нуждаетесь в учебнике для сбора фактов о хосте.

ansible clonedb -m setup -u ansible 

выше одноранговая команда с собрать факты для вашей «clonedb» группы хостов с помощью пользователя «анзиблем» для проверки подлинности. Если вы не используете SSH-ключи для аутентификации на своих серверах, вам необходимо передать опцию -k, а также запросить пароль SSH.

Однако лучший способ собрать факты будет через playbook. Вы можете еще больше упростить сборник пьес и просто сделать следующее:

--- 
- hosts: clonedb 
    user: ansible 

    tasks: 
    - name: gather facts 
    action: setup 

Вам не нужно привилегированной учетной записи, чтобы собрать факты о хозяевах.

Параметр "gather_facts" по умолчанию имеет значение True.Нет необходимости указывать его в вашем плейбуке, если вы явно не установили его в значение «False» в вашем ansible.cfg.

Вы должны хранить свои факты в redis или через json-файл, потому что как только Playbook завершится, факты будут удалены из памяти.

http://docs.ansible.com/ansible/playbooks_variables.html#fact-caching

EDIT:

упрощенная версия вашего сборника пьес:

--- 
- hosts: clonedb 
    user: ansible 
    become: yes 

    tasks: 
    - name: list files 
    command: ls 
    always_run: true 

    register: listfiles 
    - debug: var=listfiles 
+0

спасибо за ваш ответ, я делаю больше, чем просто собираю факты. Я просто привел пример одной задачи (ls). У меня есть несколько ролей, которые я называю в этой книге. некоторые из них выполняются как пользователь root, пользователь oracle, пользователь сетки. поэтому мне нужно, чтобы пользователь стал: yes и стать_user: root, так или иначе, что не работает. –

+0

Я рекомендую упростить ваш плей-лист. Нет необходимости использовать start_user: root, а также стать: yes. стать: да - это привилегированная эскалация. Ваша игра работает на моей тестовой виртуальной машине, поэтому может возникнуть проблема с файлом sudoers на удаленном компьютере. – Avalon

+0

Я обновил свой ответ, чтобы включить упрощенную версию вашей пьесы, в которой будет отображаться список файлов. – Avalon

0

После выполнения некоторых отладки и веб-поиска я нашел этот вопрос https://github.com/ansible/ansible/issues/12025

это на анзибль 2.0 , если я ставлю: да на основном уровне до t спросить он висит, но если я установить его внутри задачи он работает

ниже PlayBook не будет работать

- hosts: clonedb 
    user: ansible 
    become: yes 

    tasks: 
    - name: list files 
    command: ls 
    always_run: true 

    register: listfiles 
    - debug: var=listfiles 

, но это один работает - хосты: clonedb пользователя: анзибль

tasks: 
    - name: list files 
    command: ls 
    always_run: true 
    become: yes 
    become_user: root 

    register: listfiles 
    - debug: var=listfiles 
0

Попробуйте проверить разрешения в домашней папке пользователя, пытающегося подключиться к целевой машине. Я запускаю эту команду на своей собственной целевой машине /home/ansible: chmod 775 -R /home/ansible. Вы должны выбрать свое имя пользователя.

0

Я была такая же проблема, и я установил его, войдя в удаленный ящик и удаление каталога, созданного анзибль:

(remote_box)$ rm -Rf ~/.ansible

Это было связано с тем, что я прерванного ранее анзибль сессии ,