ansible 2.0.0.2
config file =
configured module search path = Default w/o overrides
рдХреЛрдИ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ
OS X El Capitan рд╕рдВрд╕реНрдХрд░рдг 10.11.3
рдореИрдВ "ssh [email protected] " рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдИрдерд░рдиреЗрдЯ рдХреЗрдмрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ ssh рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдкрдиреЗ Rasberry Pi рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдПрдХ рд╣реЛрд╕реНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕ IP рдкрддреЗ рдХреЗ рд╕рд╛рде Ansible рдЪрд▓ рд░рд╣рд╛ рд╣реИред
рдореИрдВрдиреЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЗрд╕ рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ рдХреЛ рд╡рд╛рдИрдлрд╝рд╛рдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ (рд╡рд╛рдИрдлрд╛рдИ рдЖрдИрдкреА рдкрддреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдм рдкреНрд░рддреНрдпрдХреНрд╖ рдИрдерд░рдиреЗрдЯ рдХрдиреЗрдХреНрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореБрдЭреЗ рдЧреБрдкреНрдд рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ansible рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдЬрд╛ рд░рд╣реА рд╣реИ:
`TASK [setup] *******************************************************************
fatal: [169.254.0.2]: UNREACHABLE! => {"changed": false, "msg": "ERROR! (25, 'Inappropriate ioctl for device')", "unreachable": true}`
рдХреНрдпреЛрдВрдХрд┐ I _can_ рдЯрд░реНрдорд┐рдирд▓ рд╕реЗ ssh рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрд╕ IP рдкрддреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЗрд╕ pi рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрддрд╛ рд╣реИ, рдореИрдВ рдпрд╣ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ Ansible рдореЗрдВ рдПрдХ рдмрдЧ рд╣реИред
рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ рдпрд╣ рдХрдорд╛рдВрдб рдЪрд▓рд╛рддрд╛ рд╣реВрдВ
ansible-playbook ansible-pi/playbook.yml -i ansible-pi/hosts --ask-pass --sudo -c paramiko -vvvv
рдореИрдВрдиреЗ рднреА рдХреЛрд╢рд┐рд╢ рдХреА
ansible-playbook ansible-pi/playbook.yml -i ansible-pi/hosts --ask-pass --sudo -vvvv
рдЬрд┐рд╕рд╕реЗ рдПрдХ рд╣реА рддреНрд░реБрдЯрд┐ рд╣реЛред
рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╣реЛрд╕реНрдЯ рдХрд░рддрд╛ рд╣реИ
[pis]
169.254.0.2
рдкреНрд▓реЗрдмреБрдХ
---
- name: Ansible Playbook for configuring brand new Raspberry Pi
hosts: pis
roles:
- pi
remote_user: pi
sudo: yes
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рднреВрдорд┐рдХрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорд╣рддреНрд╡рд╣реАрди рд╣реИ рдХреНрдпреЛрдВрдХрд┐ ssh рдХрдиреЗрдХреНрд╢рди рдЪрд░рдг рдореЗрдВ ansible рд╡рд┐рдлрд▓ рд╣реЛ рд░рд╣рд╛ рд╣реИред
рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдкреАрдЖрдИ рд╕реЗ рдЬреБрдбрд╝рдиреЗ рдФрд░ рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ (рдореИрдВ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЖрдИрдкреА рдкрддреЗ рдкрд░ рд╡рд╛рдИрдлрд╛рдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдХреЗ рдРрд╕рд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ)
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/getpass.py:83: GetPassWarning: Can not control echo on the terminal.
No config file found; using defaults
passwd = fallback_getpass(prompt, stream)
Warning: Password input may be echoed.
SSH password: raspberry
[DEPRECATION WARNING]: Instead of sudo/sudo_user, use become/become_user and
make sure become_method is 'sudo' (default). This feature will be removed in a
future release. Deprecation warnings can be disabled by setting
deprecation_warnings=False in ansible.cfg.
Loaded callback default of type stdout, v2.0
1 plays in ansible-pi/playbook.yml
PLAY [Ansible Playbook for configuring brand new Raspberry Pi] *****************
TASK [setup] *******************************************************************
<169.254.0.2> ESTABLISH CONNECTION FOR USER: pi on PORT 22 TO 169.254.0.2
CONNECTION: pid 2118 waiting for lock on 10
CONNECTION: pid 2118 acquired lock on 10
fatal: [169.254.0.2]: UNREACHABLE! => {"changed": false, "msg": "ERROR! (25, 'Inappropriate ioctl for device')", "unreachable": true}
PLAY RECAP *********************************************************************
169.254.0.2 : ok=0 changed=0 unreachable=1 failed=0
рдирдорд╕реНрддреЗ!
рдЖрдкрдХреА рдорджрдж рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред рдпрд╣ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИред
рдЗрд╕ рдЕрдиреБрд░реЛрдз рдХреЛ рдХрддрд╛рд░рдмрджреНрдз рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреБрдЫ рдкреНрд░рд╢реНрди рд╣реИрдВ рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдо рдЬрд╛рдирдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред рдпрджрд┐ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЗрд╕рдХреА рдмрд╣реБрдд рд╕рд░рд╛рд╣рдирд╛ рдХрд░реЗрдВрдЧреЗ:
рдмрд╕ рдЪреАрдЬреЛрдВ рдХреЗ рддреНрд╡рд░рд┐рдд рдЕрдиреБрд╕реНрдорд╛рд░рдХ рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡реНрдпрд╕реНрдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 800 рд╕реЗ рдЕрдзрд┐рдХ рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛ рд╣реИрдВ рдФрд░ рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рдХрддрд╛рд░ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрдВ
рд╣рдо рдкреА 1 (рдЙрдЪреНрдЪрддрдо) рдФрд░ рдкреА 5 рдХреЗ рдмреАрдЪ рдЪреАрдЬреЛрдВ рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрддреЗ рд╣реИрдВред рд╣рдо рдЖрдкрдХреЗ рд╕рдордп рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж рджреЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ!
рд╣рдо рдЪреАрдЬреЛрдВ рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреНрд░рдо рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП рдмрд╕ рдЖрдк рдХрддрд╛рд░ рд╕реЗ рдЕрд╡рдЧрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ рдФрд░ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдЖрдкрдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рднреВрд▓реЗ рд╣реИрдВ!
рдЗрд╕ рдЯрд┐рдХрдЯ рдХреЛ рдкрдврд╝рддреЗ рд╕рдордп рд╣рдо рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдЬрд░реВрд░ рджреЗрдЦреЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рддреБрд░рдВрдд рдЬрд╡рд╛рдм рдирд╣реАрдВ рджреЗ рдкрд╛рдПрдВрдЧреЗред рдЖрдк рд╣рдорд╛рд░реА рджреЛ рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣ рд╕рдХрддреЗ рд╣реИрдВ
рдЬреЛ рдмрд╣реБрдд рд╕рдХреНрд░рд┐рдп рд╣реИрдВ:
рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рдзрдиреНрдпрд╡рд╛рдж рдФрд░ рдЖрдкрдХреА рд░реБрдЪрд┐ Ansible рдореЗрдВ!
@ рдореЗрдлрд╝реНрд▓реЛрд╡рд░ : рдореИрдВ рдЕрдкрдиреА рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдореЗрдВ ansible_password
рдкреНрд░рджрд╛рди рдХрд░рдХреЗ рдЗрд╕реЗ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛
ansible_password
рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рднреА рдХрд╛рдо рдХрд┐рдпрд╛
[testServer]
192.168.33.10
[testServer:vars]
ansible_password=vagrant
рдЬрдм рдореИрдВрдиреЗ рдЕрдВрд╕рд┐рдмрд▓ рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдпрд╛ рддреЛ рдпрд╣ рдЕрдЪрд╛рдирдХ рдЦреБрд╢ рд╣реЛ рдЧрдпрд╛ред
рдореБрдЭреЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП:
ansible-playbook --limit grunndata playbook.yml -c paramiko -u deploy
рдкрд╣рд▓реЗ рдореИрдВ рдХреЗрд╡рд▓ рдЪрд▓рд╛ рд╣реИ
ansible-playbook --limit grunndata playbook.yml
рд╕рд╛рдорд╛рдиреНрдп рдПрд╕рдПрд╕рдПрдЪ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореБрджреНрджреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
ssh deploy<strong i="13">@grunndata</strong>
рдХреБрдЫ рдмрджрд▓ рдЧрдпрд╛ рд╣реИред
рдореИрдВ рдЗрд╕реЗ рдбреАрдмрдЧ рдХрд░рдиреЗ рдореЗрдВ рдХреМрди рд╕реА рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?
рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реВрдВ:
+1
5-рдореЗрдЬрдмрд╛рди рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдЕрд╕рдлрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП -рд╕реА рдкрд░рдорд┐рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЬрд░реВрд░рдд рдереА, рдФрд░ рдореИрдВ рдЙрди рд╕рднреА рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░рд╛ рдХрд░ рд╕рдХрддрд╛ рдерд╛ред
рдореЗрд░реЗ рд▓рд┐рдП, рдореЗрд░реЗ рдкрд╛рд╕ рджреВрд░рд╕реНрде рд╣реЛрд╕реНрдЯрдирд╛рдо рд╕реЗ рдореЗрд▓ рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП .ssh / config рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдереАред
Host servername
User username
рдореИрдВ ssh servername
рд╕рд╛рде рд╕рд░реНрд╡рд░ рдкрд░ рд╕реАрдзреЗ SSH рдХрд░ рд╕рдХрддрд╛ рдерд╛
рд╣рд╛рд▓рд╛рдБрдХрд┐, Ansible рдХреЗ рд╕рд╛рде, рдореБрдЭреЗ -u
рдХрдорд╛рдВрдб рдореЗрдВ
ansible-playbook -vvvv -i poc book_deploy.yml --ask-vault-pass --ask-become-pass -u username
рдЙрд╕рдХреЗ рдмрд╛рдж, рдареАрдХ рдкрд░рд┐рдирд┐рдпреЛрдЬрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдереЛрдбрд╝рд╛ рдЕрдЬреАрдм рдпрд╣ рдкрд╣рд▓реЗ рдХреЗ рд░реВрдк рдореЗрдВ .ssh / config рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рд╕рдорд╛рдзрд╛рди рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдзрдиреНрдпрд╡рд╛рдж :)
рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдП @mhowler рдмрдВрдж рдХрд░рдиреЗ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдпрд╛ рдЗрд╕реЗ рдЖрдкрдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдореЗрдВ рд╕рдордп рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ рд╣реИред
рдмреЙрдЯ рдорджрдж рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ
рдпрд╣реА рдХрд╛рд░рдг рд╣реИ? рдореИрдВ рдмрд╣реБрдд рдЦреБрд╢ рдерд╛, рдЕрдм рдореБрдЭреЗ рдкрд┐рдВрдЧ рдХрд░рдирд╛ рд╣реИ-рдореБрдЭреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ -c paramiko рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
@roolo рдореИрдВрдиреЗ 'ansible_password' рднреА рд╕реЗрдЯ рдХрд┐рдпрд╛ рдФрд░ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рд▓рдЧрд╛ред рд╡рд╣ рдХрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣реИ? рдЖрдк рдЗрд╕реЗ рд╕рдЪрдореБрдЪ рдореЗрдВ рдХреБрдЫ рднреА рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдЕрдм рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
Ansible 2.1.2.0 рдФрд░ --рд╕реНрдХ-рдкрд╛рд╕ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдореБрджреНрджрд╛ред
OS X 10.11.6
ohallors рдлрд┐рдХреНрд╕ рдиреЗ рдорджрдж рдирд╣реАрдВ рдХреАред
рдореИрдВ рдХреБрдЫ рд╣рдлреНрддреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдХрдВрдкреНрдпреВрдЯрд░ рд╕реЗ рджреВрд░ рд╣реВрдВред Pls рдореБрдЭреЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдкрд┐рдВрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж
3 рдирд╡рдВрдмрд░ рдХреЛ рдЕрдЧрд░ рдореИрдВ рдЦреБрдж рдЬрд╡рд╛рдм рдирд╣реАрдВ рджреВрдВрдЧрд╛ред рдзрдиреНрдпрд╡рд╛рдж
рд╡рд╣реАред
$ ansible --version
ansible 2.2.0 (devel 6666d13654) last updated 2016/09/22 10:43:16 (GMT -700)
lib/ansible/modules/core: (detached HEAD 0f505378c3) last updated 2016/09/23 17:20:56 (GMT -700)
lib/ansible/modules/extras: (detached HEAD 935a3ab2cb) last updated 2016/09/23 17:20:56 (GMT -700)
-C paramiko рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ -c рд╕реНрдорд╛рд░реНрдЯ рдЯреВрдЯ рдЧрдпрд╛ рд╣реИ ред
рдпрджрд┐ рдпрд╣ рдХрд┐рд╕реА рдХреА рдорджрдж рдХрд░рддрд╛ рд╣реИ, рддреЛ рдореИрдВрдиреЗ рдЕрдкрдиреА рдореЗрдЬрдмрд╛рдиреЛрдВ рдХреА рдлрд╛рдЗрд▓ рдореЗрдВ рдЗрд╕ рд▓рд╛рдЗрди рдХреЛ рдмрджрд▓рдХрд░ Ubuntu 16.04 рдкрд░ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░ рджрд┐рдпрд╛ ...
web1 ansible_ssh_host=my_remote_user<strong i="6">@my_ip</strong>
рд╕рд╛рде рдореЗрдВ
web1 ansible_ssh_host=my_ip
рдФрд░ рдлрд┐рд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдореИрдВрдиреЗ рдЬреЛрдбрд╝рд╛ рдерд╛
remote_user=my_remote_user
рдореЗрд░реЗ ansible.cfg рдХреЛ
рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдЖрдИрдкреА рдкрддреЗ рдХреЗ рд╕рд╛рдордиреЗ "my_remote_user @" рдЬреЛрдбрд╝ рджрд┐рдпрд╛ рдерд╛ред рдореИрдВрдиреЗ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдпрд╣ рдХрд╛рдо рдХрд┐рдпрд╛ рдерд╛ред
рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рдерд╛ рдФрд░ рдкрд╣рд▓реЗ рдореЗрдЬрдмрд╛рди рдХреЛ рдкрд┐рдВрдЧ рдХрд░рдиреЗ рд╕реЗ рдХрд┐рд╕реА рддрд░рд╣ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИред
ansible <host> -i <inventory-file> -m ping
UPD: рдореБрдЭреЗ рдкреНрд▓реЗрдмреБрдХ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд▓рдЧрднрдЧ рд╣рд░ рдмрд╛рд░ рдкрд┐рдВрдЧ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдирд╛ рд╣реЛрдЧрд╛ред рдЬреИрд╕реЗ рдХрд┐ рдХреБрдЫ рдорд┐рдирдЯ рдХреА рдирд┐рд╖реНрдХреНрд░рд┐рдпрддрд╛ рдХреЗ рдмрд╛рдж рдкреНрд▓реЗрдмреБрдХ рдлрд┐рд░ рд╕реЗ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИред
@ cue232s рдпрд╣ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ Ansible ssh рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдХрд┐рд╕ рдкрд╛рд╕рд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
http://docs.ansible.com/ansible/intro_inventory.html#list -of- рд╡реНрдпрд╡рд╣рд╛рд░-рд╕реВрдЪреА-рдкреИрд░рд╛рдореАрдЯрд░ (рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреИрд░рд╛рдореАрдЯрд░ рдЕрдм _ansible_ssh_pass_ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ)
рдореИрдВрдиреЗ рдореИрдХ рдУрдПрд╕ рдПрдХреНрд╕ рдкрд░ рдПрдХ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рдХреЛ 2.1.2.0 рдХреЗ рд╕рд╛рде рд╣рд▓ рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рдХрд┐ рдЗрд╕реЗ рдФрд░ рдХрд╣рд╛рдВ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдореИрдВ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП ssh рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореЗрд░реА рдкреНрд▓реЗрдмреБрдХ рдЪрд▓рд╛рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк:
fatal: [ec2-1-2-3-4.us-west-2.compute.amazonaws.com]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh.", "unreachable": true}
рдХреЛрдИ рдЕрдиреНрдп рддреНрд░реБрдЯрд┐ рдЖрдЙрдЯрдкреБрдЯ рдирд╣реАрдВред рд▓реЗрдХрд┐рди рдЗрд╕рдиреЗ -c paramiko
рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛ред
рдореИрдВрдиреЗ рез.реп.рек рдХреЛ ( pip install ansible==1.9.4
) рдбрд╛рдЙрдирдЧреНрд░реЗрдб рдХрд┐рдпрд╛ рдФрд░ рдЕрдм рдЬрдм рдореИрдВ рдЗрд╕реЗ рдЪрд▓рд╛рддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ:
fatal: [ec2-1-2-3-4.us-west-2.compute.amazonaws.com] => SSH Error: unix_listener: "/Users/myname/.ansible/cp/ansible-ssh-ec2-1-2-3-4.us-west-2.compute.amazonaws.com-22-ubuntu.0o1S2DUmaWg7dLdF" too long for Unix domain socket
рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ 2.1.2.0 рдкрд░ рд╡рд╛рдкрд╕ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдпрд╛ рдФрд░ рдореИрдВрдиреЗ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде ansible.cfg
рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЗрд╕ рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рд╛:
[ssh_connection]
control_path=%(directory)s/%%h-%%r
рдФрд░ рдХрдиреЗрдХреНрд╢рди рдХрд╛рдо рдХрд░ рдЧрдпрд╛ред
рдореБрдЭреЗ https://github.com/ansible/ansible/issues/15321#issuecomment -256346976 рдЬреИрд╕реА рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИ
ansible-playbook
рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдФрд░ ~/.ansible/cp
рддрд╣рдд рд╕реЙрдХреЗрдЯ рдирд╣реАрдВ рдмрдирд╛ рд░рд╣рд╛ рд╣реИред рдЕрдЧрд░ рдореИрдВ ansible -m ping
рдкрд╣рд▓реЗ рджреМрдбрд╝рддрд╛ рд╣реВрдВ, рддреЛ рд╕реЙрдХреЗрдЯ рдмрди рдЬрд╛рддрд╛ рд╣реИ рдФрд░ ansible-playbook
60
рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рдЕрдЧрд░ рдореИрдВ ansible-playbook
-vvv
рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рдЪрд▓рд╛рддрд╛ рд╣реВрдВ рдФрд░ рдлрд┐рд░ рджрд┐рдЦрд╛рдП рдЧрдП рд╕рдЯреАрдХ ssh рдХрдорд╛рдВрдб рдХреЛ рдХреЙрдкреА рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдЗрд╕реЗ рдЪрд▓рд╛рддрд╛ рд╣реВрдВ, рддреЛ рдХрдиреЗрдХреНрд╢рди рд╕рдлрд▓ рд╣реЛрддрд╛ рд╣реИ рдФрд░ ansible-playbook
рднреА рд╕рдлрд▓ рд╣реЛрдВрдЧреЗред
рдореИрдВ macs Sierra 10.12.1 рдкрд░ Homebrew рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдкрд┐рдд ansible-2.1.2.0 рдкрд░ рд╕рдорд╕реНрдпрд╛ рдЖ рд░рд╣рд╛ рд╣реИ
2.1.1.0 рдкрд░ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред
рдореЗрд░реА рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рдереА
рдореИрдВрдиреЗ ssh-Agent рдХреЗ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдХреБрдВрдЬреА рдЬреЛрдбрд╝рдХрд░ рдЗрд╕реЗ рд╣рд▓ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИред рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЧрдИ рдХреБрдВрдЬреА рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рдмрд┐рдирд╛ рдереАред
рдПрдХ рд╣реА рдореБрджреНрджрд╛ рд░рд╣рд╛ред рдорд╛рдирдХ рдУрдкрдирдПрд╕рдПрд╕рдПрдЪ рдкреНрд░рдпрд╛рд╕ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдкреИрд░рд╛рдорд┐рдХреЛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рджреВрд░рд╕реНрде VMs рдХрд╛ рдкреНрд░рд╛рд╡рдзрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Windows рдкрд░ Vagrant / Virtualbox рдХреЗ рдЕрдВрджрд░ Ansible рдЪрд▓ рд░рд╣рд╛ рд╣реИред рджреЛрдиреЛрдВ рдорд╢реАрдиреЗрдВ Ubuntu 16.04 рдЪрд▓рд╛ рд░рд╣реА рд╣реИрдВред Ansible рд╕рдВрд╕реНрдХрд░рдг 2.1.2.0 Ansible рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ /ansible/ansible.cfg рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИред
рдореЗрдЬрдмрд╛рди рд▓рд╛рдЗрди:
raw1 ansible_host=xx.xx.xx.xx ansible_port=22 ansible_user=root ansible_ssh_pass=wer32dw
рдпрд╣ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ:
ubuntu<strong i="12">@devbox</strong>:/ansible$ sudo ansible raw1 -vvvv -m ping
Using /ansible/ansible.cfg as config file
Loaded callback minimal of type stdout, v2.0
<xx.xx.xx.xx> ESTABLISH SSH CONNECTION FOR USER: root
<66.23.245.125> SSH: EXEC sshpass -d12 ssh -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o Port=22 -o User=root -o ConnectTimeout=10 -o ControlPath=/home/ubuntu/.ansible/cp/ansible-ssh-%h-%p-%r 66.23.245.125 '/bin/sh -c '"'"'( umask 77 && mkdir -p "` echo $HOME/.ansible/tmp/ansible-tmp-1477987158.35-58855315932449 `" && echo ansible-tmp-1477987158.35-58855315932449="` echo $HOME/.ansible/tmp/ansible-tmp-1477987158.35-58855315932449 `" ) && sleep 0'"'"''
raw1 | UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh.",
"unreachable": true
}
рдпрд╣ рдХрд╛рдо:
ubuntu<strong i="16">@tgpdevbox</strong>:/ansible$ sudo ansible raw1 -vvvv -m ping -c paramiko
Using /ansible/ansible.cfg as config file
Loaded callback minimal of type stdout, v2.0
<xx.xx.xx.xx> ESTABLISH CONNECTION FOR USER: root on PORT 22 TO xx.xx.xx.xx
<xx.xx.xx.xx> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo $HOME/.ansible/tmp/ansible-tmp-1477987431.74-236753198598806 `" && echo ansible-tmp-1477987431.74-236753198598806="` echo $HOME/.ansible/tmp/ansible-tmp-1477987431.74-236753198598806 `" ) && sleep 0'
<xx.xx.xx.xx> PUT /tmp/tmp7oXJF4 TO /root/.ansible/tmp/ansible-tmp-1477987431.74-236753198598806/ping
<xx.xx.xx.xx> EXEC /bin/sh -c 'chmod u+x /root/.ansible/tmp/ansible-tmp-1477987431.74-236753198598806/ /root/.ansible/tmp/ansible-tmp-1477987431.74-236753198598806/ping && sleep 0'
<xx.xx.xx.xx> EXEC /bin/sh -c 'LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1477987431.74-236753198598806/ping; rm -rf "/root/.ansible/tmp/ansible-tmp-1477987431.74-236753198598806/" > /dev/null 2>&1 && sleep 0'
raw1 | SUCCESS => {
"changed": false,
"invocation": {
"module_args": {
"data": null
},
"module_name": "ping"
},
"ping": "pong"
}
## рд╕рдорд╛рдзрд╛рди: Ansible 2.2.0.0 рдкрд░ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рдЕрдм -c paramiko рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИ
рдореЗрд░реЗ рдкрд╛рд╕ рдпрд╣ рддреНрд░реБрдЯрд┐ рдереА, cron
рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде, рдФрд░ рдореЗрд░реЗ рд▓рд┐рдП рднреА рдирд┐рд░реНрдзрд╛рд░рд┐рдд 2.2.0.0 рдХреЗ рдЕрдкрдЧреНрд░реЗрдб!
рдореИрдВ рдЕрдкрдиреЗ рд╣реЛрд╕реНрдЯ рдХреЛ рд░реВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдХрдиреЗрдХреНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЕрдкрдиреЗ ansible рдХреЛ рдирд╣реАрдВ рдЪрд▓рд╛ рд╕рдХрддрд╛
[root<strong i="6">@workstation</strong> svc_deployer]# ansible puppet.home.io -m ping --become-user=root --ask-sudo-pass
SUDO password:
puppet.home.io | UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh.",
"unreachable": true
}
[root<strong i="7">@workstation</strong> svc_deployer]# ssh puppet.home.io
[email protected]'s password:
Last login: Sun Nov 13 18:45:00 2016 from 192.168.56.160
[root<strong i="8">@puppet</strong> ~]#
рдореИрдВрдиреЗ рдХреНрд░рд┐рдпрд╛ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА
[root<strong i="12">@workstation</strong> svc_deployer]# sudo ansible puppet.home.io -m ping --become-user=root -c ssh -vvvv --become-method=sudo
Using /etc/ansible/ansible.cfg as config file
Loaded callback minimal of type stdout, v2.0
<puppet.home.io> ESTABLISH SSH CONNECTION FOR USER: None
<puppet.home.io> SSH: EXEC ssh -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/root/.ansible/cp/ansible-ssh-%h-%p-%r puppet.home.io '/bin/sh -c '"'"'( umask 77 && mkdir -p "` echo $HOME/.ansible/tmp/ansible-tmp-1479092049.76-54149073209683 `" && echo ansible-tmp-1479092049.76-54149073209683="` echo $HOME/.ansible/tmp/ansible-tmp-1479092049.76-54149073209683 `" ) && sleep 0'"'"''
puppet.home.io | UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh.",
"unreachable": true
}
рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛, ssh рдХреБрдВрдЬреА рдлрд╝реЛрд▓реНрдбрд░ рдЕрдиреБрдорддрд┐ (Centos6.6) рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рд╣реЛрд╕реНрдЯ рдкрд░ рдирд┐рдореНрди рдЖрджреЗрд╢ рдЪрд▓рд╛рдпрд╛
[root<strong i="6">@puppet</strong> ~]# restorecon -R -v /root/.ssh
restorecon reset /root/.ssh context unconfined_u:object_r:admin_home_t:s0->unconfined_u:object_r:ssh_home_t:s0
restorecon reset /root/.ssh/authorized_keys context unconfined_u:object_r:admin_home_t:s0->unconfined_u:object_r:ssh_home_t:s0
рдФрд░ рд╕реЗрдЯрдЕрдк рдЪрд▓рд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛
[root<strong i="10">@workstation</strong> ~]# ansible puppet -m setup
puppet.home.io | SUCCESS => {
"ansible_facts": {
"ansible_all_ipv4_addresses": [
"192.168.56.170",
"192.168.1.89"
],
"ansible_all_ipv6_addresses": [
"fe80::a00:27ff:fe6a:41b1",
"2602:306:8b7f:37d0:a00:27ff:fea7:e797",
"fe80::a00:27ff:fea7:e797"
],
ansible_host
рдирд╛рдореЛрдВ рдХреЗ рдпреБрдЧрд▓ рд╕рдВрдпреЛрдЬрдиреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
foo.bar.com
XXX.XXX.XXX.XXX (ip addresses)
рдФрд░ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рдкреИрд░рд╛рдореАрдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдмрд┐рдирд╛) рдХреЗ рд╕рд╛рде
foo-with-dashes.bar.com
foo.with.periods.AND.more.than.one.section.before.bar.com
600 рддрдХ ssh рдХреБрдВрдЬреА рдЕрдиреБрдорддрд┐рдпрд╛рдБ рд╕реАрдорд┐рдд рдХрд░рдХреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ред
рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реЛрдиреЗ:
ansible 2.1.2.0
рдЙрдмрдВрдЯреВ 14.04.5 x64
рддреНрд░реБрдЯрд┐:
failed: [shshprod](item=shsh-api) => {"item": "shsh-api", "msg": "Failed to connect to the host via ssh.", "unreachable": true}
рдЬрдм рдореИрдВ ansible-playbook -i рд╕реВрдЪреА.ini shsh.yml --key-file ssh / рддреИрдирд╛рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВ
рдпрд╣ ssh рдХреБрдВрдЬреА рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИ?
@ jimi-c рдпрд╣ рдореБрджреНрджрд╛ рдлрд┐рд░ рд╕реЗ рдХреНрдпреЛрдВ рдмрдВрдж рд╣реЛ рдЧрдпрд╛ рд╣реИ?
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдХрдореА рдХреЗ рдХрд╛рд░рдг рд╣рдорд╛рд░реЗ рдмреЙрдЯ рджреНрд╡рд╛рд░рд╛ рдореБрджреНрджрд╛ рдСрдЯреЛ-рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЙрдкрд░реЛрдХреНрдд рдХрдИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдпрд╣ SSH рдХреБрдВрдЬреА рдкрд░ рдЕрдиреБрдорддрд┐рдпреЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд (рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо) рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ (рдЬреЛ рдХрд┐ рдирд┐рдЬреА рдХреБрдВрдЬреА рдХреЗ рд▓рд┐рдП рд╣рдореЗрд╢рд╛ 0600 рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП)ред
рд╡рд░реНрддрдорд╛рди рдореЗрдВ 2.1.2.0 рдЕрдВрдХ рдкрд░ рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рдЕрдиреБрдорддрд┐рдпрд╛рдБ рд╕рдорд╕реНрдпрд╛ рдкреНрд░рддреАрдд рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ
рдореИрдВ рдЙрд╕ рдПрдХреНрд╕реЗ 2 рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП DNS рдирд╛рдо рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реВрдВ, рдЬреЛ рдореИрдВ рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдлреЙрд░реНрдо рдореЗрдВ рд╡рд╛рдкрд╕ рдЖрддрд╛ рд╣реИ: ec2 - # {ip_address} .ap-southeast-2.compute.amodaws.com
рдЙрд╕ рдкрд░рд┐рдгрд╛рдо рдореЗрдВ рддреНрд░реБрдЯрд┐:
UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh.", "unreachable": true}
рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЕрдЧрд░ рдореИрдВ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП IP рдкрддреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рдЪрд▓рддрд╛ рд╣реИ ... рдЗрд╕рд▓рд┐рдП @marcstreeter рдХреЛ рдЙрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрд╣реБрдд рдХрд░реАрдм рд▓рдЧрддрд╛ рд╣реИ
bot_skip
рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕ рдорд╛рдорд▓реЗ рдХрд╛ рдЕрдиреБрднрд╡ рд╣реИ, рдПрдХ рд▓рдХреНрд╖реНрдп рд╣реЛрд╕реНрдЯ рдЪрд▓рд╛рдиреЗ рд╡рд╛рд▓реЗ CentOS рдХреЗ рд╕рд╛рде 2.0.2.0
рдЪрд▓ рд░рд╣рд╛ рд╣реИред
рдореЗрд░реЗ рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ, рдореЗрд░реЗ рдкрд╛рд╕ hosts
рдпреБрдХреНрдд рд╡рд┐рд╡рд░рдг рд╣реИрдВ рдЬреИрд╕реЗ ansible_host
ansible_user
рдФрд░ ansible_ssh_pass
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд░реНрдгреЛрдВ рдХрд╛ рдкрд╛рд░реНрд╕рд┐рдВрдЧ "#" рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рдЕрд░реНрдерд╛рдд 3 рд╕рд░реНрд╡рд░ рдореЗрдВ "#" рдкрд╛рд╕рд╡рд░реНрдб рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЙрди 3 рд╣реЛрд╕реНрдЯ рдиреЗ рддреНрд░реБрдЯрд┐ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдерд╛)ред
рдкреНрд▓реЗрдмреБрдХ рдЪрд▓рд╛рдиреЗ рд╕реЗ рдореБрдЭреЗ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ:
PLAY [all] *********************************************************************
TASK [setup] *******************************************************************
<120.xxx.xxx.xxx> ESTABLISH CONNECTION FOR USER: root on PORT 22 TO 120.xxx.xxx.xxx
fatal: [sz-server]: UNREACHABLE! => {"changed": false, "msg": "Authentication failed.", "unreachable": true}
рдЕрдЬреАрдм рд╣рд┐рд╕реНрд╕рд╛ рдпрд╣ рд╣реИ рдХрд┐ рддреНрд░реБрдЯрд┐ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╡рд┐рдлрд▓ рд░рд╣реА рд╣реИред рд▓реЗрдХрд┐рди рдПрдХ SSH рд╕рддреНрд░ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рд╕рд░реНрд╡рд░ рдХреЗ secure
рд▓реЙрдЧ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛, рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рддрд╛ рд╣реИ:
<server> sshd[23642]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=<sz-server> user=root
<server> sshd[23642]: pam_succeed_if(sshd:auth): requirement "uid >= 1000" not met by user "root"
<server> sshd[23642]: Failed password for root from <IP> port 61912 ssh2
рдореЗрд░реЗ рдкрд╛рд╕рд╡рд░реНрдб рдХреЛ рдмрджрд▓рдиреЗ рд╕реЗ "#" рдХреА рдЬрдЧрд╣ рдПрдХ рдЕрд▓рдЧ рд╡рд┐рд╢реЗрд╖ рдЪрд░рд┐рддреНрд░ рдЬреИрд╕реЗ "%" рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдЕрдм, рдкреНрд▓реЗрдмреБрдХ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕рднреА рдорд╢реАрди рдкрд░ рдЪрд▓рддреА рд╣реИред
@ upbeta01 рдЬреЛ рдХрд┐ рдПрдХ рдкреБрд░рд╛рдирд╛ рдмрдЧ рдерд╛, рдФрд░ рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рд╣рдордиреЗ рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ рд╣реА рдЗрд╕реЗ рдареАрдХ рдХрд░ рд▓рд┐рдпрд╛ рдерд╛ред рдХрд┐рд╕реА рдЯрд┐рдкреНрдкрдгреА рдХреА рд╢реБрд░реБрдЖрдд рдорд╛рдиреЗ рдЬрд╛рдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ # рднрд╛рдЧрдирд╛ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИ
@ Jimi-c рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВ рдЕрдкрдиреЗ рдирд╡реАрдирддрдо рд╕реЗ рд╕реНрдерд┐рд░ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдЕрдЧрд░ 2.0.2.0
рдмрдЧ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рддреЛ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИред
рдореИрдВ $ ansible --version 2.2.0.0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рд╕рдорд╕реНрдпрд╛ рдмрдиреА рд╣реБрдИ рд╣реИ ... рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдореЗрд░реЗ рд▓рд┐рдП рдореБрдЭреЗ рдпрд╣ рдЦреБрд▓рд╛ рдзрд╛рдЧрд╛ рдорд┐рд▓рд╛ ... рд╢рд╛рдпрдж рд╣рдо Centos 7 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ
рдореИрдВ ansible 2.2.0.0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рдпрд╣ рдЖрджреЗрд╢ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ sudo рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ:
ansible -m command -a 'df -h' ca.o.prv
рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдирд╣реАрдВ:
ansible -s -m command -a 'fdisk -l' ca.o.prv
cas.o.prv | FAILED | rc=0 >>
MODULE FAILURE
рд╣рд▓ рдХрд┐рдпрд╛:
ansible рд╕рднреА -s --ask-sudo-pass -m raw -a "fdisk -l"
@tyronzerafa рдФрд░ рдЦреБрдж рдКрдкрд░ рдХреЗ рд╕рдорд╛рди рдореБрджреНрджреЛрдВ рдХреЛ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВред рд╣рдорд╛рд░рд╛ рдкрд░реНрдпрд╛рд╡рд░рдг рд╣реИ:
OS:
`` `$ рдмрд┐рд▓реНрд▓реА / рдЖрджрд┐ / рд░рд┐рд╣рд╛рдЯ-рд░рд┐рд▓реАрдЬрд╝
CentOS рд░рд┐рд▓реАрдЬрд╝ 6.8 (рдЕрдВрддрд┐рдо)
Ansible Version:
```$ ansible --version
ansible 2.2.0.0
config file = /etc/ansible/ansible.cfg
configured module search path = Default w/o overrides
рдЕрд╕рдлрд▓ рдкрд┐рдВрдЧ:
`` $ рдЕрдирд╕рд┐рдлрд╝рд┐рдХ tcfriv -m рдкрд┐рдВрдЧ
server3 | рдЕрдиреБрдкрдпреЛрдЧреА! => {
"рдкрд░рд┐рд╡рд░реНрддрд┐рдд": рдЕрд╕рддреНрдп,
"рд╕рдВрджреЗрд╢": "ssh рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реЛрд╕реНрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓:",
"рдЕрдЧрдореНрдп": рд╕рдЪ
}
server1 | рд╕рдлрд▓рддрд╛ => {
"рдкрд░рд┐рд╡рд░реНрддрд┐рдд": рдЕрд╕рддреНрдп,
"рдкрд┐рдВрдЧ рдкрд╛рдВрдЧ"
}
server2 | рд╕рдлрд▓рддрд╛ => {
"рдкрд░рд┐рд╡рд░реНрддрд┐рдд": рдЕрд╕рддреНрдп,
"рдкрд┐рдВрдЧ рдкрд╛рдВрдЧ"
}
Successful ping:
```$ ansible tcfabrics -m ping -c paramiko
server3 | SUCCESS => {
"changed": false,
"ping": "pong"
}
server1 | SUCCESS => {
"changed": false,
"ping": "pong"
}
server2 | SUCCESS => {
"changed": false,
"ping": "pong"
}
рдореЗрдЬрдмрд╛рдиреЛрдВ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдФрд░ рдХрд┐рд╕реА рднреА рдкреНрд▓реЗрдмреБрдХ рдпрд╛ рдХрдорд╛рдВрдб рдкрд░ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдЯреНрд░рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ, рдкреИрд░рд╛рдореАрдХреЛ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ (рд╕реНрдорд╛рд░реНрдЯ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдкрд░ рд╡рд┐рдлрд▓ рд╣реЛрддрд╛ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ 100% рд╕рдлрд▓рддрд╛ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдХрднреА рдирд╣реАрдВ)ред
рдпрджрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЕрд▓рдЧ рд╣реИ рддреЛ рд╣рдореЗрдВ рдмрддрд╛рдПрдВ рдФрд░ рд╣рдо рдПрдХ рдЕрд▓рдЧ рдореБрджреНрджрд╛ рдЦреЛрд▓реЗрдВрдЧреЗ
UNREACHABLE рд╡рд╛рд▓реЛрдВ рдХреЛ рджреЗрдЦреЗрдВ, рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдЪрд▓ рд░рд╣рд╛ рд╣реИред
рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рд░реНрд╡рд░ рдХреЗ -k рдлреНрд▓реИрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдХреАрдлрд╝рд╛рдЗрд▓ рд╕реЗрдЯ рдирд╣реАрдВ рд╣реИ
ansible -i hosts servers -m ping -u root -k
рдореИрдВрдиреЗ ansible-playbook рджреНрд╡рд╛рд░рд╛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдкреВрд░реНрдг ssh рдХрдорд╛рдВрдб рдХреЛ "-vvv" рдХреЛ рдЗрд╕рдХреЗ рдХрдорд╛рдВрдб-рд▓рд╛рдЗрди рдореЗрдВ рдЬреЛрдбрд╝ рджрд┐рдпрд╛, рдФрд░ рдЗрд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЪрд▓рд╛рдпрд╛ред рдЗрд╕рдиреЗ рдЗрд╕реЗ рдЕрдВрдд рдореЗрдВ рдЫрд╛рдкрд╛:
unix_listener: "/home/saurav/.ansible/cp/ansible-ssh-very-long-aws-ec2-hostname-deploy.XXYY" рдпреВрдирд┐рдХреНрд╕ рдбреЛрдореЗрди рд╕реЙрдХреЗрдЯ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд▓рдВрдмрд╛ рд╣реИ
рдореЗрдЬрдмрд╛рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЕрдкрдиреЗ рдЖрдИрдкреА рдХреЗ рд╕рд╛рде EC2 рд╣реЛрд╕реНрдЯрдирд╛рдо рдХреЛ рдмрджрд▓рдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рдЗрд╕реЗ рддрдп рдХрд┐рдпрд╛ред
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ ansible ~/.ssh/config
рд╕рдореНрдорд╛рди рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ:
Host raspberrypi.local
StrictHostKeyChecking no
рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╢реЗрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реЙрдЧ рдЗрди рдХрд░ рд╕рдХрддрд╛ рдерд╛ рд▓реЗрдХрд┐рди рдПрдВрд╕рд┐рдмрд▓ рд╡рд┐рдлрд▓ рд░рд╣рд╛ред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рддрдп:
ssh-keygen -R raspberrypi.local
рдореБрдЭреЗ рдЖрдЦрд┐рд░рдХрд╛рд░ рдореЗрд░рд╛ рдХрд╛рдо рдорд┐рд▓ рдЧрдпрд╛, рдпрд╣ рд░реВрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рд╣реИ, рдкрд╣рд▓рд╛ рдкреНрд░рд╛рд╡рдзрд╛рди рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИред рд╕рднреА рдпреБрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рднрд▓реЗ рд╣реА рдпрд╣ рдереЛрдбрд╝рд╛ рдЕрдЬреАрдм рд╣реЛред
рдлрд╝рд╛рдЗрд▓: рд╣реЛрд╕реНрдЯ
[test]
91.121.103.38 ansible_ssh_user=root
[test:vars]
ansible_password=MustBeTheRealPassword
рдЖрджреЗрд╢
ansible-playbook -vvvv preciousbook.yml -c paramiko -u root --ask-become-pass
рдореИрдВрдиреЗ root
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рджреЗрдЦрд╛, рдореИрдВ -u root
рдзреНрд╡рдЬ рдХреЗ рдмрд┐рдирд╛ рдЪрд▓рд╛ рд╕рдХрддрд╛ рд╣реВрдВ, рдФрд░ рдореЗрдЬрдмрд╛рди рдореЗрдВ root<strong i="21">@ipaddr</strong> , rather just leave it the as the
ipaddr 'рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ред
ansible-playbook -vvvv php.yml -c paramiko --ask-become-pass
- рдореИрдВрдиреЗ рдЧреИрд░-рд░реВрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдпрд╛ SSH рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рдпрд╛рд╕ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдбрд┐рдЬрд┐рдЯрд▓ рдорд╣рд╛рд╕рд╛рдЧрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рдЖрдкрдХреЛ рдорд╢реАрди рдХреЛ рдмреВрдЯ рдХрд░рдиреЗ рдкрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рддрд╛ рд╣реИред
@JREAM @PGUTH @roolo @ohallors @ringe @mhfowler @midolo @ upbeta01 (рдФрд░ рдЕрдиреНрдп рд▓реЛрдЧ рдЬреЛ рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред
рдХреНрдпрд╛ рдЖрдк 2.3 рд░рд┐рд▓реАрдЬрд╝ рдЙрдореНрдореАрджрд╡рд╛рд░ рдмрд┐рд▓реНрдб (http://releases.ansible.com/ansible/ansible-2.3.0.0-0.3.rc3.tar.gz) рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
рдФрд░ рдЕрдЧрд░ рдпрд╣ рдЕрднреА рднреА рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ, рддреЛ ansible.cfg config, -vvv рдЖрдЙрдЯрдкреБрдЯ рдФрд░ ssh рдХреЙрдиреНрдлрд┐рдЧрд░реНрд╕ рдФрд░ рд╢рд╛рдорд┐рд▓ рдХрд┐рдП рдЧрдП рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рднреА рд╕рд╛рдЭрд╛ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░реЗрдВ?
@alikins - рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдореБрдЭреЗ рдХрдорд╛рдВрдб ansible-playbook
рдЪрд▓рд╛рдиреЗ рдкрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд░рд╣реА рд╣реИред рдореИрдВ virtualenv
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд░рд┐рд▓реАрдЬрд╝ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВред рдХреНрдпрд╛ рдореИрдВ рдХреБрдЫ рднреБрд▓ рдЧрдпрд╛?
тФМтФА(ansible-2.3)[User][Eldies-MacBook-Pro][~/Private/work/infra/2.3/ansible-2.3.0.0/bin]
тФФтФАтЦк ./ansible-playbook -l hz-monitor -vvvv
Traceback (most recent call last):
File "./ansible-playbook", line 43, in <module>
import ansible.constants as C
ImportError: No module named ansible.constants
рдпрд╣рд╛рдБ рд╣реИ рдХрд┐ рдпрд╣ рдлрд╝рд╛рдЗрд▓ рд╕рдВрд░рдЪрдирд╛ рдкрд░ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред
тФМтФА(ansible-2.3)[User][Eldies-MacBook-Pro][~/Private/work/infra/2.3/ansible-2.3.0.0/bin]
тФФтФАтЦк ls
ansible ansible-console ansible-galaxy ansible-pull ansible.cfg hosts
ansible-connection ansible-doc ansible-playbook ansible-vault check_uptime.yml roles
@ upbeta01 рдХреВрд▓, рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ asible рдЕрдЬрдЧрд░ рдкреИрдХреЗрдЬ sys.path рдкрд░ рдирд╣реАрдВ рд╣реИред (рдЕрд░реНрдерд╛рдд, ~ / рдирд┐рдЬреА / рдХрд╛рдо / infra / 2.3 / ansible-2.3.0.0 / lib / ansible рдХреЛ sys.path рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП)ред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ virtualenv рдХреИрд╕реЗ рд╕реЗрдЯрдЕрдк рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рдЕрдирдкреИрдХреНрдб tar.gz рд╣реИ рддреЛ рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ:
cd ~/Private/work/infra/2.3/ansible-2.3.0.0/
source hacking/env-setup
рдпрд╣ PYTHONPATH рдореЗрдВ ~ / рдирд┐рдЬреА / рдХрд╛рдо / infra / 2.3 / ansible-2.3.0.0 / lib / ansible рдЬреЛрдбрд╝ рджреЗрдЧрд╛ рдФрд░ ~ / рдирд┐рдЬреА / рдХрд╛рдо / infra / 2.3 / ansible-2.3.0.0 рдХреЛ ANSIBLE_HOME рд╕реЗрдЯ рдХрд░реЗрдЧрд╛ рдЬреЛ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ virtualenv рдореЗрдВ рдЯрд╛рд░рдмреЙрд▓ рдХрд╛ рдПрдХ рдкрд╛рдЗрдк рдЗрдВрд╕реНрдЯрд╛рд▓ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдирд╣реАрдВ рд╣реБрдЖ рд╣реИред
рдореЗрд░реЗ рдкрд╛рд╕ рдЕрднреА рднреА рдпрд╣ рдореБрджреНрджрд╛ рд╣реИ, рдЕрдЧрд░ рдЖрдкрдХреЛ рдЬрд╝рд░реВрд░рдд рд╣реИ рддреЛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИред
рдЙрдмреБрдиреНрдЯреБ 16.04 рдФрд░ рдЕрдирд╕рд┐рдмрд▓ 2.0.0.2
xxxx<strong i="7">@xxxx</strong>:/etc/ansible# ansible-playbook provision.yml
PLAY ***************************************************************************
TASK [setup] *******************************************************************
fatal: [c999951727-cloudpro-689901068]: UNREACHABLE! => {"changed": false, "msg": "ERROR! Authentication failure.", "unreachable": true}
PLAY RECAP *********************************************************************
c999951727-cloudpro-689901068 : ok=0 changed=0 unreachable=1 failed=0
xxx<strong i="8">@xxxxx</strong>:/etc/ansible# ansible New -m ping
c999951727-cloudpro-689901068 | SUCCESS => {
"changed": false,
"ping": "pong"
}
root<strong i="9">@rundeck</strong>:/etc/ansible# ansible-playbook provision.yml
PLAY ***************************************************************************
TASK [setup] *******************************************************************
ok: [c999951727-cloudpro-689901068]
TASK [user : Create Ansible User] **********************************************
changed: [c999951727-cloudpro-689901068]
TASK [user : Add Ansible Authorized Key] ***************************************
changed: [c999951727-cloudpro-689901068]
TASK [user : Create Personal User] *********************************************
changed: [c999951727-cloudpro-689901068]
TASK [user : Add Personal Authorized Key] **************************************
changed: [c999951727-cloudpro-689901068]
PLAY RECAP *********************************************************************
c999951727-cloudpro-689901068 : ok=5 changed=4 unreachable=0 failed=0
рдореБрдЭреЗ рднреА рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИ
рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ python-simplejson
рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рддрдереНрдпреЛрдВ рдХреЛ рдЗрдХрдЯреНрдард╛ рднреА рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдЗрд╕реЗ рдореЗрд░реА рдкреНрд▓реЗрдмреБрдХ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдорджрдж рдорд┐рд▓рддреА рд╣реИред
gather_facts: no
pre_tasks:
- name: 'install python2'
raw: apt-get update; apt-get -y install python-simplejson
- setup:
filter=ansible_*
tags: always
@shadycuz : рдореЗрд░реЗ рд▓рд┐рдП, рдпрд╣ Ubuntu 16.04 рдкрд░ рд╣рд▓ рд╣реЛ рдЧрдпрд╛ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде ansible.cfg рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛:
[ssh_connection]
# for running on Ubuntu
control_path=%(directory)s/%%h-%%r
рд╕рдВрдмрдВрдзрд┐рдд рдиреЛрдЯ рдкрд░, рдореИрдХ рд╣реЛрд╕реНрдЯ рдкрд░ рдЪрд▓рдиреЗ рдкрд░ рдЗрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛:
[ssh_connection]
# for running on OSX
control_path = %(directory)s/%%C
рдореБрдЭреЗ рднреА рд╡рд╣ рд╕рдорд╕реНрдпрд╛ рдереА рдФрд░ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдореЗрд░рд╛ sftp рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдирд╣реАрдВ рд╣реБрдЖ рдерд╛ред / etc / ssh / sshd_config рдХреЛ рдмрджрд▓рдХрд░ sshd рд╕рд░реНрд╡рд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ рдФрд░ ssh рд╕рд░реНрд╡рд░ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░реЗрдВред рд╕рдорд╕реНрдпрд╛ рдЪрд▓реА рдЧрдИ рд╣реИред
рдореИрдХ рд╣реЛрд╕реНрдЯ рд╕реЗ рдЪрд▓рдиреЗ рдкрд░, @ttrahan рдХрд╛ ansible.cfg рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рд░рдЧрд░ рдирд╣реАрдВ рд░рд╣рд╛ред рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдкреНрд▓реЗрдмреБрдХ рд╣реИ рдЬреЛ рдХрдИ рдмреЙрдХреНрд╕ рд╕реЗ рдЬреБрдбрд╝ рд░рд╣рд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ Ubuntu 14.04 рдпрд╛ 12.04 рдЪрд▓ рд░рд╣реЗ рд╣реИрдВред рдЙрдмрдВрдЯреВ рдХреЗ рд╕рднреА рдмреЙрдХреНрд╕ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред CentOS рдЪрд▓рд╛ рд░рд╣реЗ рджреЛ рдмреЙрдХреНрд╕, рд╣рд╛рд▓рд╛рдБрдХрд┐, рджреЛрдиреЛрдВ рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рд╕реЗ рдЬреБрдбрд╝рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣реЗ рд╣реИрдВ:
fatal: [<a-centos-host>]: UNREACHABLE! => {"changed": false, "msg": "Failed to open session: [Errno 54] Connection reset by peer", "unreachable": true}
@alikins , рдЕрдЧрд░ env-setup
рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рд╣реИ рддреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ var
рдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред
рдпрд╣рд╛рдБ рдореИрдВ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ hacking
рдЕрдВрджрд░ рдХреНрдпрд╛ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдБ
тФМтФА[User][Eldies-MacBook-Pro][~/Private/work/infra/2.3/ansible-2.3.0.0]
тФФтФАтЦк source hacking/
dump_playbook_attributes.py module_formatter.py templates/
рдХреНрдпрд╛ рдореБрдЭреЗ рдЯрд╛рд░ рдлрд╛рдЗрд▓ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдЗрд╕рдореЗрдВ рдирдИ рдлрд╛рдЗрд▓реЗрдВ рдорд┐рд▓реА рд╣реИрдВ?
рд╣рд╛рдп, рдХреНрдпрд╛ рдХреЛрдИ рдореЗрд░реА рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ? рдореИрдВ рдЕрдкрдиреЗ VM (CentOS 7.) рд╕реЗ рд╕рд┐рд╕реНрдХреЛ рд░рд╛рдЙрдЯрд░ рдХреЛ рдкрд┐рдВрдЧ рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд╣реВрдВ
[root<strong i="6">@centos7</strong> ansible]# ansible ios -m ping
<IP_address> | UNREACHABLE! => {
"changed": false,
"msg": "Authentication failed.",
"unreachable": true
}
рдпрд╣рд╛рдБ ansible.cfg рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд╕реНрдирд┐рдкреЗрдЯ рд╣реИ:
transport = paramiko
host_key_checking = False
# SSH timeout
timeout = 20
рд╣реЛрд╕реНрдЯ рдлрд╝рд╛рдЗрд▓:
[ios]
10.10.15.233 ansible_ssh_user=local ansible_ssh_pass=password
json
[root<strong i="15">@centos7</strong> ansible]# ansible --version
ansible 2.2.1.0
config file = /etc/ansible/ansible.cfg
configured module search path = Default w/o overrides
рдирдорд╕реНрддреЗ,
рдЙрдмрдВрдЯреВ 16.04 рдореЗрдВ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ 2.3.0.0 рдХреЗ рд╕рд╛рде рдореЗрд░реА рд╡рд╣реА 'рдЕрдЧрдореНрдп рддреНрд░реБрдЯрд┐' рдереАред
рд▓рд╛рдЧреВ -рд╕реА paramiko
рдЙрджрд╛рд╣рд░рдг: $ ansible-playbook -i рдЗрдиреНрд╡реЗрдВрдЯрд░реАред
рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдлрд┐рд░ рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдорд┐рд▓рд╛ - рдХреЛрдИ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рддрд░реАрдХреЗ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВ,
рдЙрд╕ рдирдИ рддреНрд░реБрдЯрд┐ рдХреЛ рд╕реНрд╡рдпрдВ рдХреЛ рд╣рд▓ рдХрд░рддреЗ рд╕рдордп 'рдХрдиреЗрдХреНрд╢рди: рд▓реЛрдХрд▓' рдХреЛ YAML рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рджреЛрдиреЛрдВ рдореБрджреНрджреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рднреА, рдХрд╛рдо рдХреЛ рдЬрд╛рд░реА рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред
$ ansible-playbook -i inventory ./router/tasks/get-vlan.yml
`---
- name: Check for VLAN 123 from Cisco IOS Routers
hosts: routers
connection: local
vars_prompt:
- name: "username"
prompt: "Username"
private: no
- name: "password"
prompt: "Password"
tasks:
- ios_command:
username: "{{ username }}"
password: "{{ password }}"`
commands: "show ip int bri | inc vlan 123"
@ dave-morrow рдЖрдкрдХреЗ рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рдмрд╣реБрдд рд╕рд╛рд░реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рджреЛ рджрд┐рди рдкрд╣рд▓реЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдпрд╣ рдлрд┐рдХреНрд╕ 'рдХрдиреЗрдХреНрд╢рди = рд╕реНрдерд╛рдиреАрдп' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИред
рд▓реЗрдХрд┐рди, рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ IOS рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╢реЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдпреЛрдЧреНрдп рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИред рд╣рдореЗрдВ рдХрдорд╛рдВрдбрд░ рдореЗрдЬрдмрд╛рдиреЛрдВ рдкрд░ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИред рдХрд┐рд╕реА рднреА рд╡рд┐рдЪрд╛рд░, рдХреГрдкрдпрд╛?
@ b2sweety рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рд╡рд╛рд▓ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдЬрд╡рд╛рдм рдирд╣реАрдВ рдкрддрд╛ рд╣реИред
рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд▓рд┐рдП Ansible рдмрд╣реБрдд рдирдпрд╛ рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореИрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рдПрдХ рджрд┐рди рдХреЗ рд▓рд┐рдП рдЦреЗрд▓ рд░рд╣рд╛ рд╣реВрдВред
рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рд╕рд┐рд╕реНрдХреЛ (IOS) CLI UNIX (POSIX) CLI рдЬреИрд╕рд╛ рдХреБрдЫ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╢рд╛рдпрдж рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдореИрдВ рдЗрд╕ рд╕рд╡рд╛рд▓ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рджреВрд╕рд░реЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджреВрдБрдЧрд╛ред
рд╣реЗрд▓реЛ рдЕрдиреНрд╕рд┐рдмрд▓ рдЯреАрдо,
рдореИрдВрдиреЗ Rhel 7x рдорд╢реАрдиреЛрдВ рдкрд░ Ansible рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рд╣реИред рдореИрдВрдиреЗ 2 рдорд╢реАрди рдХреЗ рд░реВрдк рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рд▓рд┐рдпрд╛ред 1 - рдирд┐рдпрдВрддреНрд░рдг рд╕рд░реНрд╡рд░ рдФрд░ рдиреЛрдб 1.I рдиреЗ SSH рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдИ рдФрд░ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдкрд╛рд╕рд╡рд░реНрдб рдХреЛ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рд▓реЙрдЧрд┐рди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдоред
рдЬрдмрдХрд┐ "рдкрд┐рдВрдЧ: рдЪреЗрдХ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдЬрд╛ рд░рд╣реА рд╣реИ, рдЗрдирд╕рд┐рдЯреЛрд░реА рдлрд╝рд╛рдЗрд▓ рдкрд░ рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ / рд▓реЛрдХрд▓ рдХрдВрдЯреНрд░реЛрд▓ рд╕рд░реНрд╡рд░ рдЖрдИрдкреА рдПрдбреНрд░реЗрд╕ рдХреЗ рд▓рд┐рдП рддреНрд░реБрдЯрд┐ рд╣реЛ рд░рд╣реА рд╣реИред
[ansible@ip-172-31-27-41 .ssh]$ ansible test -m ping
172.31.27.41 | UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).\r\n",
"unreachable": true
}
рдпрд╣ рддреНрд░реБрдЯрд┐ рд╣реИ, рдХреГрдкрдпрд╛ рдореБрдЭреЗ рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд░реЗрдВред рдореЗрд░рд╛ рдореЗрд▓ - "nlkalyanред [email protected] "
рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ ansible_connection=ssh
рд╕реЗрдЯ рдХрд░рдХреЗ рдкреИрд░рд╛рдорд┐рдХреЛ рдХреЛ рдЕрдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред
UNREACHABLE! => {
"changed": false,
"msg": "('Bad authentication type', [u'publickey']) (allowed_types=[u'publickey'])",
"unreachable": true
}
# Hosts File
[host_name]
XX.XXX.XXX.XXX ansible_user=username ansible_connection=ssh
рдЪрд▓рд╛рдиреЗ рдХреЗ рдЖрджреЗрд╢:
ansible-playbook -i inventory_file playbook.yml
@Vcoleman , рдорджрдж рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж ..
рдореИрдВрдиреЗ рдЖрдкрдХреЛ рджрд┐рдпрд╛ рдХрджрдо, рдлрд┐рд░ рднреА рд╡рд╣реА рддреНрд░реБрдЯрд┐ редред
рдкрд┐рдВрдЧ рдХреЙрдореИрдВрдб
$ ansible test -m ping
рдЦрджрд╛рди рдкрд░ рджрд┐рдЦрд╛рдИ рдЧрдИ рддреНрд░реБрдЯрд┐ рдХреБрдЫ рдереА рдЬреЛ рдЖрдкрдХреА рддреБрд▓рдирд╛ рдореЗрдВ рднрд┐рдиреНрди рд╣реИ ред---->
"" рд╕рдВрджреЗрд╢ ":" ssh рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реЛрд╕реНрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓: рдЕрдиреБрдорддрд┐ рдЕрд╕реНрд╡реАрдХреГрдд (publickey, gssapi-keyex, gssapi-with-mic) .rn ""
рдореИрдВрдиреЗ рдЕрдкрдиреА рд╣реЛрд╕реНрдЯреНрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдиреАрдЪреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИред
рдореЗрд░реЗ рдореЗрдЬрдмрд╛рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддреА рд╣реИ ::
[test]
172.31.27.41 ansible_user=ansible ansible_connection=ssh
#172.31.22.200
172.31.21.47
рдЙрдкрд░реЛрдХреНрдд 172.31.27.41 рдореЗрд░рд╛ рд╕реНрдерд╛рдиреАрдп рд╕рд░реНрд╡рд░ (рдирд┐рдпрдВрддреНрд░рдг рд╕рд░реНрд╡рд░) рд╣реИ
рдлрд┐рд░ рд╕реЗ рдореИрдВ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рдерд╛ ..
@pavaniandkalyan рдХреНрдпрд╛ рдЖрдк рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реИрдВ рдХрд┐ RPI рдкрд░ рд╕рд╣реА SSH рдХреБрдВрдЬреА рд░рдЦрдиреЗ рд╡рд╛рд▓рд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ ansible
?
рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐, рдореИрдВрдиреЗ рдХрдВрдЯреНрд░реЛрд▓ рд╕рд░реНрд╡рд░ рд╕реЗ рд╕рднреА рдиреЛрдбреНрд╕ рдХреЗ рд▓рд┐рдП рд╕рднреА рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдИ рд╣реИ рдФрд░ рдПрдХ рдирд┐рд╕реНрд╕рдВрджреЗрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╢реНрд▓реЛрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИред
рдХреНрдпрд╛ рдирд┐рдпрдВрддреНрд░рдг рд╕рд░реНрд╡рд░ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд / рдЕрдкрдбреЗрдЯ / рдкрд┐рдВрдЧ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ? рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ Ansbile рдХреЗ рд╕рд╛рде рд╕реНрд╡рдЪрд╛рд▓рди рдХреЗ рджреМрд░рд╛рди рдХрдВрдЯреНрд░реЛрд▓ рд╕рд░реНрд╡рд░ рдЗрдВрдЯреНрд░реИрдХреНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП? рдпрд╛ рдХреЗрд╡рд▓ рдиреЛрдбреНрд╕ рдкреБрд╢ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ?
рдпрд╣ рд╕рд╣реА рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ -c paramiko рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛:
ansible -i inventory/ec2.py us-west-2 -u ec2-user -m ping -c paramiko
x.x.217.210 | SUCCESS => {
"changed": false,
"ping": "pong"
}
ansible -i inventory/ec2.py us-west-2 -u ec2-user -m ping
x.x.217.210 | UNREACHABLE! => {
"changed": false,
"msg": "SSH Error: data could not be sent to remote host \"x.x.217.210\". Make sure this host can be reached over ssh",
"unreachable": true
}
msg: SSH Error: data could not be sent to remote host "x.x.217.210". Make sure this host can be reached over ssh
рдореИрдВ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рдереА:
$ ansible local -m ping
127.0.0.1 | UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh: Permission denied (publickey,password).\r\n",
"unreachable": true
}
рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ sshpass рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдХреЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛:
sudo apt-get install sshpass
рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж sshpass, рдореИрдВрдиреЗ рдЗрд╕ рдХрдорд╛рдВрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛:
ansible local -m ping --ask-pass
SSH password:
127.0.0.1 | SUCCESS => {
"changed": false,
"ping": "pong"
}
рдЙрдореНрдореАрдж рд╣реИ рдХреА рдпрд╣ рдорджрдж рдХрд░реЗрдЧрд╛!!!
рдПрдХ рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ paramiko рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
ansible-playbook abc.yml -i development -c paramiko
рдпрд╛ ansible config рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ
[defaults]
transport = paramiko
рдореЗрд░реА рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рдереА:
рдореЗрд░рд╛ рд╕рдВрдХрд▓реНрдк resolution *
ansible -c local -i all_servers all_servers -m ping
-c рд╕реНрдерд╛рдиреАрдп рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛, рдореИрдВрдиреЗ
transport = local
рд╕реЗрдЯ рдХрд┐рдпрд╛ рдФрд░ рдлрд┐рд░ рдореБрдЭреЗ рд░рдиреЛрдВ рдореЗрдВ-c
рд╡рд┐рдХрд▓реНрдк рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рдкрдбрд╝реАред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐-c local
.ssh/config
рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд╕рдореНрдорд╛рди рдХрд░рддрд╛ рд╣реИред рдЕрдЧрд░ рд╡рд╣ рдирд╣реАрдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рддреЛ рдЖрдкрдХреЛansible.cfg
рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рднреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореЗрд░рд╛ рдЕрдиреБрдорд╛рди рд╣реИред
рдЙрдкрд░реЛрдХреНрдд рдЙрджреНрдзрд░рдг рдЬреЛ рдореИрдВрдиреЗ рдХрд▓ рд▓рд┐рдЦрд╛ рдерд╛, рдпрд╣ рд╕реЛрдЪрдХрд░ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИ рд╣реИред рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдЪреБрдиреЗ рдЧрдП рдЕрднрд┐рдкреНрд░рд╛рдп рд╕рд╣реА рдирд╣реАрдВ рд╣реИрдВ
рдореИрдВ рдЬреЛ рджреЗрдЦрддрд╛ рд╣реВрдВ рдЙрд╕рд╕реЗред рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдХрд╛рдлреА рд╕рд╣реА рд╣реИред рдпрд╣ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рдХреЛрдб рдХреЗ рд╕рд╛рде рдЕрдкрдиреА ansible.cfg рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╢рд┐рдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рддреЛ рдкрд╣рд▓реЗ рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдкрдХреЗ .ssh/config
рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рдирдП рд╕рдВрд╕реНрдХрд░рдг рдирд╣реАрдВ рд╣реИред
рддреЛ ansible рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдЖрдкрдХреЛ ssh рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ [ssh_connection] рдмреНрд▓реЙрдХ рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рджреЗрддреЗ рд╣реИрдВред рдЬрд╣рд╛рдВ рдЖрдк ssh рдХреЗ рд▓рд┐рдП рд╕рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдм рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЕрдЧрд░ рдЖрдкрдХреЗ рдирд┐рдпрдВрддреНрд░рдг рд╕рд░реНрд╡рд░ рдФрд░ рдЖрдкрдХреА рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ IP рдпрд╛ рдбреАрдПрдирдПрд╕ рд░рд┐рдХреЙрд░реНрдб рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ .ssh / config рдлрд╛рдЗрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред рд▓реЗрдХрд┐рди рд╣рдо рдореЗрдВ рд╕реЗ рдЬреНрдпрд╛рджрд╛рддрд░ рдХреА рддрд░рд╣ рд╣рдорд╛рд░реЗ .ssh/config
рд╕рдореНрдорд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЗрд╕ рдореБрджреНрджреЗ рдерд╛ред рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ ssh config file
рдХрд╛ рд╕реНрдерд╛рди рдмрддрд╛рдПрдВред рдиреАрдЪреЗ рдХреА рддрд░рд╣
ssh_args = -F /Users/vinitk/.ssh/config -o ControlMaster=auto -o ControlPersist=30m
15 control_path = ~/.ssh/controlmasters/%%r@%%h:%%p
ControlMaster and ControlPersist
рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдФрд░ Control_path
рдПрдХ рд╣реА рд╕реЗрдЯрд┐рдВрдЧ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИ рдЬреЛ рдХрд┐ рдореЗрд░реЗ .ssh/config
рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реИред рдпрд╣ рдХреБрдЫ рдФрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдЖрдк рдЕрд▓рдЧ рд╕реНрдерд╛рди рдкрд░ рдЙрдиреНрд╣реЗрдВ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЖрд╕рд╛рдиреА рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рд╡рд╣реА рд░рд╛рд╕реНрддрд╛ рд░рдЦрд╛ рддрд╛рдХрд┐ Ansible
рдФрд░ Parallel-ssh
рдЬреИрд╕реЗ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрд╕реА ControlMaster
рдХрд░ рд╕рдХреЗрдВред
control_path = ~/.ssh/controlmasters/%%r@%%h:%%p
рдореЗрдВ рджреЛ %%
рд╕рдВрдХреЗрдд рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдХрд┐рд╕реА рдПрдХ рдХреЗ рд▓рд┐рдП рдЕрдкреАрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдлрд┐рд░ рдЕрдЧрд▓рд╛ рднрд╛рдЧ рдпрд╣ рд╣реИ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЕрдиреНрд╕рд┐рдмрд▓ рдХреЛ smart
рд▓рд┐рдП рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдпрд╣ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдиреАрдЪреЗ рдмреНрд▓реЙрдХ рд╣реИред
# Control the mechanism for transferring files (new)
# If set, this will override the scp_if_ssh option
# * sftp = use sftp to transfer files
# * scp = use scp to transfer files
# * piped = use 'dd' over SSH to transfer files
# * smart = try sftp, scp, and piped, in that order [default]
transfer_method = scp
рдЖрдк рдХреА рдЬрд░реВрд░рдд рд╣реИ sftp Subsystem
рдореЗрдВ sshd_config
рд╕рд░реНрд╡рд░ рдкрд░ рдлрд╝рд╛рдЗрд▓ред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреБрдЫ рд╕рд░реНрд╡рд░реЛрдВ рдХреЗ рдкрд╛рд╕ рд╡рд╣ рд╕реЗрдЯрд┐рдВрдЧ рдирд╣реАрдВ рдереА рдФрд░ sftp
UNREACHABLE
рд░реВрдк рдореЗрдВ рд╡рд╛рдкрд╕реА рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рдмрди рдкрд╛рдИред smart
рдХреА рд╕реЗрдЯрд┐рдВрдЧ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдпрд╣ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЙрд╕ рдХреНрд░рдо рдореЗрдВ sftp, then scp and then pipe
рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП transfer_method = scp|piped
рдХрд╛рд░реНрдп рд╕реЗрдЯ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рдерд╛ред
рдЙрдореНрдореАрдж рд╣реИ рдХреА рд╡реЛ рдорджрдж рдХрд░рджреЗ
рд░реБрдЪрд┐ рд░рдЦрдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╕ рдПрдХ рдЕрдкрдбреЗрдЯред
рдпрд╣рд╛рдВ рд╣рд░ рд╣рд▓ рдореЗрд░реЗ рд▓рд┐рдП рд╡рд┐рдлрд▓ рд╣реЛ рдЧрдпрд╛ рд╣реИред рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬреЛ рдХрд╛рдо рдХрд░рддреА рд╣реИ рд╡рд╣ ansible vред 2.1.5.0-1 рддрдХ рдЕрдкрдЧреНрд░реЗрдб рд╣реЛ рд░рд╣реА рд╣реИ, рдЬреЛ рд░реЗрдкреЛ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИред рддрдм рдпрд╣ рд╕рдм рд╕реБрдЪрд╛рд░реВ рд╣реИред
рдореИрдВрдиреЗ 2 рдШрдВрдЯреЗ рддрдХ рдпрд╣ рд▓рдбрд╝рд╛рдИ рд▓рдбрд╝реА рдФрд░ рдлрд┐рд░ рд░рди-рдкреНрд▓реЗрдмреБрдХ рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП "-c ssh" рдкрд╛рдпрд╛ред рдПрдХ рдЬрд╛рджреВ рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд┐рдпрд╛ред рдпрд╣ рдХреБрдЫ рдореБрджреНрджреЛрдВ рдХреЗ рдЖрд╕рдкрд╛рд╕ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдкреБрд░рд╛рдиреЗ рдУрдкрдирдПрд╕рдПрд╕рдПрдЪ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╣реИрдВред
рдирдорд╕реНрддреЗ ,
рдЬрдм рднреА рдореИрдВ рдУрдкрди рд╢рд┐рдлреНрдЯ рдХреНрд▓рд╕реНрдЯрд░ рд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдореБрдЭреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддреНрд░реБрдЯрд┐ рдорд┐рд▓реАред рдореИрдВ рдиреАрдЪреЗ рдХрдорд╛рдВрдб рдЪрд▓рд╛рддрд╛ рд╣реВрдВред
sudo ansible-playbook /usr/share/ansible/openshift-ansible/playbooks/byo/config.yml
fatal: [g_all_hosts | default([])]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: ssh: Could not resolve hostname g_all_hosts | default([]): Name or service not known\r\n", "unreachable": true}
`` `json
[rhnuser3 @ ip-172-31-10-250 ~] $ ansible -m рдкрд┐рдВрдЧ рд╕рднреА
ip-172-31-10-250.ca-central-1.compute.internal | рдЕрдиреБрдкрдпреЛрдЧреА! => {
"рдкрд░рд┐рд╡рд░реНрддрд┐рдд": рдЕрд╕рддреНрдп,
"рд╕рдВрджреЗрд╢": "ssh рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реЛрд╕реНрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓: рд╣реЛрд╕реНрдЯ рдХреБрдВрдЬреА рд╕рддреНрдпрд╛рдкрди рд╡рд┐рдлрд▓ рд░рд╣рд╛ рд╣реИред",
"рдЕрдЧрдореНрдп": рд╕рдЪ
We have verified following steps.
Master communicating to the node
[ rhnuser3 @ ip-172-31-10-250 ~] $ ssh [email protected]
рдЕрдВрддрд┐рдо рд▓реЙрдЧрд┐рди: рдорд╛рд╕реНрдЯрд░ рд╕реЗ рдмреБрдз рдЕрдЧрд╕реНрдд 16 08:05:16
[ rhnuser3 @ рдиреЛрдб ~] $
Node Communicating to the master
[ rhnuser3 @ ip-172-31-9-57 ~] $ ssh [email protected]
рдЕрдВрддрд┐рдо рд▓реЙрдЧрд┐рди: рдиреЛрдб рдЕрдЧрд╕реНрдд 16 рд╕реЗ 07:56:06 2017 рдиреЛрдб
[ rhnuser3 @ рдорд╛рд╕реНрдЯрд░ ~] $
We have changed necessary changed necessary configuration file from master and node server.
vi /etc/ansible/ansible.cfg
рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА = / etc / ansible / рд╣реЛрд╕реНрдЯ
рд╕реБрдбреЛ_рд╕рд░ = rhnuser3
Removed comments from following lines.
We have updated /etc/hosts/file тАУ it is look like
[ rhnuser3 @ ip-172-31-10-250 ~] $ рдмрд┐рд▓реНрд▓реА / рдЖрджрд┐ / рдореЗрдЬрдмрд╛рди
172.31.10.250 рдорд╛рд╕реНрдЯрд░
172.31.9.57 рдиреЛрдб
рд╕реБрдбреЛ vi / etc / ssh / sshd_config
sudo cat / var / log / safe
```log
Aug 16 08:28:09 localhost sshd[22792]: Disconnecting: Too many authentication failures for root [preauth]
Aug 16 08:28:09 localhost sshd[22792]: PAM 5 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=blk-222-40-174.eastlink.ca user=root
Aug 16 08:28:09 localhost sshd[22792]: PAM service(sshd) ignoring max retries; 6 > 3
рдорд╛рд╕реНрдЯрд░ рд╕рд░реНрд╡рд░ рдореИрдВрдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛
ssh-keygen -t rsa
cat /home/rhnuser3/.ssh/id_rsa.pub
sudo vi /home/rhnuser3/.ssh/authorized_keys
sudo chmod 600 .ssh/authorized_keys
sudo chown rhnuser3:rhnuser3 .ssh/authorized_keys
cat /home/rhnuser3/.ssh/id_rsa
рдиреЛрдб рд╕рд░реНрд╡рд░ рдореИрдВрдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдХрд┐рдпрд╛ред
cd /home/rhnuser3
mkdir .ssh
chmod 700 .ssh
chown rhnuser3:rhnuser3 .ssh
sudo vi /home/rhnuser3/.ssh/authorized_keys
sudo chmod 600 .ssh/authorized_keys
sudo chown rhnuser3:rhnuser3 .ssh/authorized_keys
sudo vi /home/rhnuser3/.ssh/id_rsa
sudo chmod 600 .ssh/id_rsa
sudo chown rhnuser3:rhnuser3 .ssh/id_rsa
рдХреГрдкрдпрд╛ рдЗрди рдкрд░ рд╕реБрдЭрд╛рд╡ рджреЗрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред
@virtusademo
рдЧреБрдгрд╕реВрддреНрд░ рдиреЗ рдЕрднреА рдЯрд┐рдкреНрдкрдгреА рдХреА рд╣реИ
[rhnuser3<strong i="64">@master</strong> ~]$ ansible --version
ansible 2.3.1.0
config file = /etc/ansible/ansible.cfg
configured module search path = Default w/o overrides
python version = 2.7.5 (default, May 3 2017, 07:55:04) [GCC 4.8.5 20150623 (Red Hat 4.8.5-14)]
[rhnuser3<strong i="67">@master</strong> ~]$ cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.1 (Maipo)
рдореИрдВ 2.3.1.0 рдкрд░ ansible рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред / etc / ansible / рд╣реЛрд╕реНрдЯ рдореЗрдВ рдореЗрд░реЗ рд╣реЛрд╕реНрдЯ рдЬреЛрдбрд╝реЗред рдЕрдЧрд░ рдореИрдВ рдХрд░рддрд╛ рд╣реВрдБ, - рддреНрд░реБрдЯрд┐ рдЖрдиреЗ рд╕реЗ рдиреАрдЪреЗ-рд╣реЛрд╕реНрдЯ рдХрд░рддрд╛ рд╣реИ
рддреНрд░реБрдЯрд┐! рдлрд╝реАрд▓реНрдб 'рд╣реЛрд╕реНрдЯ' рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред Ansible.cfg рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдкрде рдореЗрдВ рд╕рдорд╛рди рд╣реИред рдХреНрдпрд╛ рдХреЛрдИ рдЗрд╕рдореЗ рдореЗрд░реА рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ?
hi..рдХрд┐рд╕реА рднреА рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдпреЛрдЧреНрдп рдХреЗ рд▓рд┐рдП рдПрдХ рднрд┐рдЦрд╛рд░реА рд╣реИ, рдореИрдВ рдЗрд╕реЗ рдирд┐рд░рдВрддрд░ рд╡рд┐рддрд░рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВред
рдореИрдВ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА, рдкреНрд▓реЗрдмреБрдХ, рдореЙрдбреНрдпреВрд▓ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдХреИрд╕реЗ рдмрд╛рддрдЪреАрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рдкрддрд╛ рд╣реИ рддреЛ рдХреГрдкрдпрд╛ рдореБрдЭреЗ [email protected] рдкрд░
рд╣рдо рджрд┐рди рдХреЗ рдЕрдВрдд рдореЗрдВ рдЗрд╕реЗ рдХреИрд╕реЗ рд╣рд▓ рдХрд░рддреЗ рд╣реИрдВ?
рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ : рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░реА рд░рд┐рдореЛрдЯ рдорд╢реАрди рдкрд░ SSH рд╕реЗрд╡рд╛ рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЧрдИ рд╣реИред рдореИрдВрдиреЗ PuTTY рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ ssh рд╕рддреНрд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдпрд╣ рд▓реЙрдЧрд┐рди рдкреНрд░реЙрдореНрдкреНрдЯ рд╕реЗ рдкрд╣рд▓реЗ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИред
edit2 : рджреВрд░рд╕реНрде рдорд╢реАрди рдкрд░ SSH рд╕реЗрд╡рд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдм рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣реА рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВрдиреЗ рдЕрднреА рддрдХ рдХреЛрдИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рджреА рд╣реИ рдХрд┐ рддреНрд░реБрдЯрд┐ рдХреНрдпрд╛ рд╣реИред рдЪреВрдБрдХрд┐ рдпрд╣ рд╕реАрдзреЗ рддреМрд░ рдкрд░ рддрдм рд╣реБрдЖ рдерд╛ рдЬрдм рдЗрд╕ Ansible рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЪрд▓рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдореИрдВ рдЗрд╕реЗ рдпрд╣рд╛рдБ рдЫреЛрдбрд╝ рд░рд╣рд╛ рд╣реВрдБ рдЬреИрд╕реЗ рдХрд┐ рдПрдХ Ansible рддреНрд░реБрдЯрд┐ рдХреЗ рдХрд╛рд░рдг рдХреНрд░реИрд╢ рд╣реЛрдиреЗ рдХрд╛ sshd рд╣реЛрддрд╛ рд╣реИ, рдпрд╣ рдЕрднреА рднреА рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╡рд┐рд╡рд░рдг: рд▓рдХреНрд╖реНрдп рдФрд░ рдирд┐рдпрдВрддреНрд░рдг рдорд╢реАрди рджреЛрдиреЛрдВ рдЗрдВрдЯреЗрд▓ xeons рд╣реИрдВ рдЬреЛ CentOS 7 рдкрд░ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВред рдирд┐рдпрдВрддреНрд░рдг рд╕рдВрд╕реНрдХрд░рдг рд╕реЗрдВрдЯреЛ-рд░рд┐рд▓реАрдЬрд╝-7-4.1708.e17.centos.x86_64 рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд▓рдХреНрд╖реНрдп рдПрдХ рдЖрдИрд░рд┐рд╕ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рд╕реЗрдЯрдЕрдк рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдЪрд╛рдирдХ ansible 2.4.1.0
рддрд╣рдд рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд▓реЗ рд░рд╣рд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдПрдХ рдирдИ рднреВрдорд┐рдХрд╛ рдХреЛ рдбрд┐рдмреЗрдЯ рдХрд┐рдпрд╛, рд╕рдм рдХреБрдЫ рдареАрдХ рдЪрд▓ рд░рд╣рд╛ рдерд╛ рдФрд░ рдлрд┐рд░ рдпрд╣ рдЕрдЪрд╛рдирдХ рд╣реЛрдиреЗ рд▓рдЧрд╛ред
рдпреЗ рд╡рд┐рдХреГрдд рдХрд╛рд░реНрдп рдереЗ рдЬреЛ рдХрдиреЗрдХреНрдЯ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╣реА рд╡рд┐рдлрд▓ рд╣реЛ рдЧрдП:
- name: Get media SDK install folder contents
command: "ls /opt/a-specific-directory/"
register: directories
- name: verify expected directories in install folder
fail:
when: not ({{directories}}|search({{item}}))
vars:
nested_list:
- - dir1
- dir2
- dir3
- dir4
- dir5
- dir6
- dir7
- dir8
- dir9
with_items: "{{ nested_list }}"
рдЙрдиреНрд╣реЛрдВрдиреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХ рджреА:
TASK: verify expected directories in install folder
[WARNING]: when statements should not include jinja2 templating delimiters such as {{ }} or {% %}. Found: not
({{directories}}|search({{item}}))
fatal: [10.105.15.118]: FAILED! => {"failed": true, "msg": "The conditional check 'not ({{directories}}|search({{item}}))' failed. The error was: template error while templating string: expected token ':', got 'string'. String: {% if not ({'stderr_lines': [], u'changed': True, u'end': u'2017-11-28 12:12:31.502092', 'failed': False, u'stdout': u'dir2\\ndir3\\ndir4\\ndir5\\ndir6\\ndir7\\ndir8\\ndir9', u'cmd': [u'ls', u'/opt/a-specific-directory/'], u'rc': 0, u'start': u'2017-11-28 12:12:31.500354', u'stderr': u'', u'delta': u'0:00:00.001738', 'stdout_lines': [u'dir2', u'dir3', u'dir4', u'dir5', u'dir6', u'dir7', u'dir8', u'dir9']}|search(dir1)) %} True {% else %} False {% endif %}\n\nThe error appears to have been in '/home/my-playbook-location/playbook.yml': line 6, column 5, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n\n - name: Verify expected directories in media SDK install folder\n ^ here\n"}
рдореИрдВрдиреЗ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХреЛ ansible-playbook -vvvv myplaybook.yml
рдмрд╛рдж рдореЗрдВ рдЪрд▓рд╛рдиреЗ рд╕реЗ рдХреЙрдкреА рдХрд┐рдпрд╛ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛:
Failed to connect to the host via ssh: OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 58: Applying options for *
debug1: auto-mux: Trying existing master
debug1: Control socket "/home/MY-USER/.ansible/cp/01607ca611" does not exist
debug2: resolving "[MY-REMOTE-IP]" port 22
debug2: ssh_connect_direct: needpriv 0
debug1: Connecting to MY-REMOTE-IP [MY-REMOTE-IP] port 22.
debug2: fd 3 setting O_NONBLOCK
debug1: fd 3 clearing O_NONBLOCK
debug1: Connection established.
debug3: timeout: 10000 ms remain after connect
debug1: identity file /home/MY-USER/.ssh/id_rsa type 1
debug1: key_load_public: No such file or directory
debug1: identity file /home/MY-USER/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/MY-USER/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/MY-USER/.ssh/id_dsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/MY-USER/.ssh/id_ecdsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/MY-USER/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/MY-USER/.ssh/id_ed25519 type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/MY-USER/.ssh/id_ed25519-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_7.4
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.6.1
debug1: match: OpenSSH_6.6.1 pat OpenSSH_6.6.1* compat 0x04000000
debug2: fd 3 setting O_NONBLOCK
debug1: Authenticating to 10.105.15.118:22 as 'root'
debug3: hostkeys_foreach: reading file "/home/MY-USER/.ssh/known_hosts"
debug3: record_hostkey: found key type ECDSA in file /home/MY-USER/.ssh/known_hosts:1
debug3: load_hostkeys: loaded 1 keys from 10.105.15.118
debug3: order_hostkeyalgs: prefer hostkeyalgs: [email protected],[email protected],[email protected],ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521
debug3: send packet: type 20
debug1: SSH2_MSG_KEXINIT sent
Connection reset by MY-REMOTE-IP port 22
рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдмрдирдирд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдм рддрдХ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛ред
рдирд┐рдпрдВрддреНрд░рдХ рдкрд░ рджреЛрдиреЛрдВ id_rsa рдлрд╛рдЗрд▓реЗрдВ, рдФрд░ рд░рд┐рдореЛрдЯ рдорд╢реАрди рдкрд░ рдЕрдзрд┐рдХреГрдд_рдХреАрдк рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдПрдХ рд╕рдкреНрддрд╛рд╣ рдкрд╣рд▓реЗ рд╡рд╣рд╛рдВ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рдЬреЛрдбрд╝реА рдереА рдФрд░ рдЕрдиреБрдорддрд┐рдпрд╛рдБ 600 рд░рд╣ рдЧрдИ рд╣реИрдВред
рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ : рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░реА рд░рд┐рдореЛрдЯ рдорд╢реАрди рдкрд░ SSH рд╕реЗрд╡рд╛ рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЧрдИ рд╣реИред рдореИрдВрдиреЗ PuTTY рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ ssh рд╕рддреНрд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдпрд╣ рд▓реЙрдЧрд┐рди рдкреНрд░реЙрдореНрдкреНрдЯ рд╕реЗ рдкрд╣рд▓реЗ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИред
рд╣рд╛рдБ, рдореИрдВ рдЙрд╕ рд╕рдорд╕реНрдпрд╛ рдХреА рднреА рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реВрдВ рдЬрдм рднреА рдореИрдВ рдПрдХ рдирдП рдореИрдХ рдкрд░ Ansible рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реВрдВред рдпрд╣ рджреБрдЦ рдХреА рдмрд╛рдд рд╣реИред
рдмрд╕ рдЗрд╕ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛, рдХреЗрд╡рд▓ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореЗрд░реЗ рдореИрдХ рдкрд░ рд╣реЛрдиреЗ рд▓рдЧрддрд╛ рд╣реИред
рдХрдиреЗрдХреНрд╢рди: рд╕реНрдерд╛рдиреАрдп рдкреНрд▓реЗрдмреБрдХ рдореЗрдВ рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рддрдп рдХреА рдЧрдИ
рдЙрд╕реА рддреНрд░реБрдЯрд┐ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИ:
рдШрд╛рддрдХ: [рез.реи.рей.рек]: рдЕрдиреБрдкрдпреЛрдЧреА! => {"рдкрд░рд┐рд╡рд░реНрддрд┐рдд": рдЕрд╕рддреНрдп, "рд╕рдВрджреЗрд╢": "ssh рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реЛрд╕реНрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓: рдЪреЗрддрд╛рд╡рдиреА: рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ '1.2.3.4' (ECDSA) рдХреЛ рдЬреНрдЮрд╛рдд hosts.rnPermission рдХреА рд╕реВрдЪреА рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ (pubicickey) .rn" , "рдЕрдЧрдореНрдп": рд╕рддреНрдп}
SSH рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди ansible рддреНрд░реБрдЯрд┐ рд░рд╣рд┐рдд рддреНрд░реБрдЯрд┐ рдХреЛ рдлреЗрдВрдХрддрд╛ рд╣реИ
@induraj рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдЪрд▓рдиреЗ рдпреЛрдЧреНрдп рдХреБрдВрдЬреА рдХреЗ рд▓рд┐рдП рдкрд╣реБрдБрдЪ рдирд╣реАрдВ рд╣реИред
рдХреНрдпрд╛ рдЖрдк ansible --version рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рднреА рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣ рднреА рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдиреЗ рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рдзрд┐ (рдкрд╛рдЗрдк рдпрд╛ рдХрд╛рдврд╝рд╛) рджреНрд╡рд╛рд░рд╛ рд╣реА рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИ
рддреБрд░рдВрдд рдЬрд╡рд╛рдм рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж:
(ansble) ansible @ sharma : ~ $ рдкрд╛рдЗрдк рдлреНрд░реАрдЬ | grep ansible
ansible == 2.4.2.0
рдХреНрдпрд╛ рдЖрдк virtualenv рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдХреБрдВрдЬреА рддрдХ рдкрд╣реБрдВрдЪ рд╣реИ?
рд╣рд╛рдБ рдЙрдирдХреА рдкрд╣реБрдБрдЪ рд╣реИ:
ll ~ / .ssh / raj_aws.pem
-rw ------- 1 ansible ansible 1692 Jan 13 23:12 .shsh / raj_aws.pem
рдХреНрдпрд╛ рдХреБрдЫ рдЖрд╡рд╢реНрдпрдХ рд╣реИ?
@induraj рдореБрдЭреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ virtualenv рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд╣реА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИред
рдареАрдХред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдореИрдВ рд╡рд╣реА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдлрд┐рд░ рднреА рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рдЕрдм рддрдХ рдореЗрд░реЗ рдкрд╛рд╕ рдЬреЛ рдХреБрдЫ рд╣реИ, рдЙрд╕реЗ рдореБрдЭреЗ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рджреЛред
рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдореБрдЭреЗ EC2 VM рддрдХ рдкрд╣реБрдБрдЪ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдореИрдВ рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдг рдХреЛ ansible рд╕реЗ рдЖрдЧреЗ рдмрдврд╝рд╛ рд╕рдХреВрдБред
рдореИрдВрдиреЗ рдЖрдзрд╛рд░ рдорд╢реАрди рдкрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рд╣реИ рдмрд┐рдирд╛ virtualenv рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╕рдорд╕реНрдпрд╛ рд╣реЛред
рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ ssh- рдПрдЬреЗрдВрдЯ рдХреА рдХрдИ рдХреБрдВрдЬрд┐рдпрд╛рдБ рд╣реИрдВ, рддреЛ рдЕрдкрдиреЗ рдирд┐рдЬреА рдХреБрдВрдЬреА рдХреЛ ssh-agent рдХреЗ рдмрдЬрд╛рдп рдЧрд▓рдд рдХреБрдВрдЬреА рд╕реЗ рдЧреБрдЬрд░рдиреЗ рдФрд░ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЕрдкрдиреЗ рд╣реЛрд╕реНрдЯ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдореЗрдВ ansible_ssh_pStreet_key_file рд╡реИрд░рд┐рдПрдмрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдирдорд╕реНрддреЗ!
Ansible рдореЗрдВ рдЖрдкрдХреА рд░реБрдЪрд┐ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред рдпрд╣ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИред
рдпрд╣ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рд╢реНрди рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рд╣рдо рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рдпрд╛ рдЖрдИрдЖрд░рд╕реА рдЪреИрдирд▓ рдкрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдЪреАрдЬреЛрдВ рдХреЛ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рдпрджрд┐ рдЖрдк рд╡рд╣рд╛рдБ рд░реБрдХ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЗрд╕рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░реЗрдВрдЧреЗред рдпрд╣ рд╣рдореЗрдВ рдмрдЧреНрд╕, рдкреБрд▓ рдЕрдиреБрд░реЛрдзреЛрдВ, RFE рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдореБрджреНрджреЗ рдкрд░ рдирдЬрд╝рд░ рд░рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рдзрдиреНрдпрд╡рд╛рдж рдФрд░ рд╣рдо рдЖрдкрдХреЛ рд╕реВрдЪреА рдпрд╛ рдЖрдИрдЖрд░рд╕реА рдкрд░ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрд╕реБрдХ рд╣реИрдВред рдзрдиреНрдпрд╡рд╛рдж!
рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдореБрдЦреНрдп рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдирд┐рдпрдВрддреНрд░рдг рдлрд╝рд╛рдЗрд▓ рдирд╣реАрдВ рдмрдирд╛рдИ рдЧрдИ рдереА рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкреНрд░реЙрдХреНрд╕реА рдХрдорд╛рдВрдб рдХреЗ рдкрд╛рд╕ рдЙрдЪрд┐рдд рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рдереАред
Ansible cmd рдореЗрдВ -vvvvvvv
рд╡рд┐рдХрд▓реНрдк рдЬреЛрдбрд╝рдХрд░ рдХрдорд╛рдВрдб рдХрд╛ рдкрддрд╛ рдЪрд▓рд╛:
ssh -vvv -o ControlMaster=auto -o ControlPersist=30m -o ConnectionAttempts=100 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o Port=22 -o 'IdentityFile="secret.id_rsa"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=luser -o ConnectTimeout=10 -o 'ProxyCommand=ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -W %h:%p -q [email protected]' -o ControlPath=/Users/me/.ansible/cp/3b9a3c71ba 10.0.3.27 '/bin/sh -c '"'"'python && sleep 0'"'"''
рдЕрдЧрд░ рдореИрдВрдиреЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ 10.0.3ред * рдФрд░ рд░реЗрд░рди рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рд░реНрдЧ рдмрдирд╛рдпрд╛ рд╣реИ рдЬреЛ -o 'ProxyCommand=ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -W %h:%p -q [email protected]'
рд╡рд┐рдХрд▓реНрдк рдХреЗ рдмрд┐рдирд╛ рдХрдорд╛рдВрдб рдХрд░рддрд╛ рд╣реИред рдирд┐рдпрдВрддреНрд░рдг рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдИ рдЧрдИ рдереА, рдлрд┐рд░ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд┐рдпрд╛ред
рдореИрдВ рдЕрдкрдиреЗ рд╣реЛрд╕реНрдЯ рдкрд░ рдФрд░ рдлреЙрд░рд╡рд░реНрдб рдкреНрд░реЛрдирдЧреЗрдВрдЯ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд╕рд╛рде рдмрд┐рдЯ рд╣реЛрд╕реНрдЯ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдереЛрдбрд╝рд╛ рдмрд╣реБрдд рдлрд╛рдпрджрд╛ рдирд╣реАрдВ рд╣реБрдЖред рдЖрдЦрд┐рд░рдХрд╛рд░ рдореИрдВрдиреЗ рдмрд╕ рдореЗрдВ рднрд╛рдЧ рд▓рд┐рдпрд╛ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдЕрд╕рдлрд▓ рдореЗрдЬрдмрд╛рди рдХреЗ рд▓рд┐рдП рдЙрд╕ рдЖрджреЗрд╢ рдХреЛ рдЪрд▓рд╛рдпрд╛ рдФрд░ рд╣реИрдХ рдХреЛ рдореЗрд░реЗ рдХрд╛рдо рдХреЛ рдЕрдирдмреНрд▓реЙрдХ рдХрд░ рджрд┐рдпрд╛ред
рдореИрдВ рдПрдХ рдЧреИрд░-рдорд╛рдирдХ рдирд┐рдЬреА рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛ рдФрд░ рдпрд╣ рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рдерд╛ред рдпрд╣ 600 рдкрд░рдорд┐рдЯ рдерд╛ред ssh-add <path-to-private-key>
рдореЗрд░рд╛ рдореБрджреНрджрд╛ рддрдп рдХрд┐рдпрд╛ред
рджреВрд░рд╕реНрде рд╕рд░реНрд╡рд░ рдкрд░ ssh-copy-id рдХреЗ рд╕рд╛рде рдореЗрд░реА рдХреБрдВрдЬреА рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдареАрдХ рд╣реЛ рдЧрдИред
ssh args рдореЗрдВ -o ControlMaster=auto -o ControlPersist=30m
рдЬреЛрдбрд╝рдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рдореБрджреНрджрд╛ рддрдп рд╣реЛ рдЧрдпрд╛ред
рдЕрдзрд┐рдХ:
рднреВрдорд┐рдХрд╛ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмреАрдЪ рдореЗрдВ "UNREACHABLE" рддреНрд░реБрдЯрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ред рдПрдХ рд╣реА рдХрд╛рд░реНрдп рдкрд░ рд░реЛрдХ рд▓рдЧреЗрдЧреАред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдореИрдВ рдХреЗрд╡рд▓ рдЙрд╕ рдХрд╛рд░реНрдп (рдЯреИрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ) рдХреЛ рдЕрд▓рдЧ рдХрд░ рджреЗрддрд╛ рддреЛ рдЪрд▓ рдЬрд╛рддрд╛ред
ansible -m ping myServer
рдиреЗ рдореБрдЭреЗ UNREACHABLE!
рддреНрд░реБрдЯрд┐ рджреАред
ansible -c local -m ping myServer
рдХрд╛рдо рдХрд┐рдпрд╛ред
рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдореЗрд░реА рдкреНрд▓реЗрдмреБрдХ рдореЗрдВ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдпрд╣ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
- hosts: dev
connection: local
рдореБрдЭреЗ ansible 2.6.0
рд╕рд╛рде рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛
ansible.cfg рдореЗрдВ рдореЗрд░реЗ ssh_args
ssh_args = -o ForwardAgent=yes -o ControlMaster=auto -o ControlPersist=30m -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no
рдореИрдВ SSH рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╣реЛрд╕реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛
рд▓реЗрдХрд┐рди ansible-playbook рдпрд╛ ansible -m ping рдХреЛ рдЪрд▓рд╛рдиреЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдПрдБ рдереАрдВ
2.5.5 рдХреЗ рд▓рд┐рдП ansible рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рд╕реЗ рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИ
рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ, ubuntu 14.04 ansible 2.6.2 рдХреЗ рд╕рд╛рде (рдирд╡реАрдиреАрдХрд░рдг 1.9 рд╕реЗ рдЕрдкрдЧреНрд░реЗрдб)
ansible -m ping myServer gave me UNREACHABLE! error.
ansible -c local -m ping myServer worked.
@kararukeys рдХреЗ рдЕрдиреБрд╕рд╛рд░
рдореИрдВ 2.5.5 рдкрд░ рдбрд╛рдЙрдирдЧреНрд░реЗрдб рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА рд╡рд╣реА рд╣реИ
2018-08-01 16:00:32 [mini<strong i="10">@hq</strong> ansiblecontrol]$ ansible hqpc222.abc.com -i inventory/kw.production -m ping -vvv
/usr/local/lib/python2.7/dist-packages/cryptography/hazmat/primitives/constant_time.py:26: CryptographyDeprecationWarning: Support for your Python version is deprecated. The next version of cryptography will remove support. Please upgrade to a 2.7.x release that supports hmac.compare_digest as soon as possible.
utils.DeprecatedIn23,
ansible 2.5.5
config file = /home/mini/D/ansiblecontrol/ansible.cfg
configured module search path = [u'/home/mini/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/local/lib/python2.7/dist-packages/ansible
executable location = /usr/local/bin/ansible
python version = 2.7.6 (default, Oct 26 2016, 20:30:19) [GCC 4.8.4]
Using /home/mini/D/ansiblecontrol/ansible.cfg as config file
Parsed /home/mini/D/ansiblecontrol/inventory/kw.production inventory source with ini plugin
[pid 2014] 16:00:41.194783 D mitogen: mitogen.service.Pool(0x7f73f53147d0, size=16, th='MainThread'): initialized
[pid 2014] 16:00:41.195890 D ansible_mitogen.process: Service pool configured: size=16
META: ran handlers
[pid 2033] 16:00:41.233401 D mitogen: unix.connect(path='/tmp/mitogen_unix_uMVCQQ')
[pid 2033] 16:00:41.234083 D mitogen: unix.connect(): local ID is 1, remote is 0
[pid 2014] 16:00:41.235861 D mitogen: mitogen.ssh.Stream(u'default').connect()
[pid 2014] 16:00:41.304490 D mitogen: hybrid_tty_create_child() pid=2037 stdio=63, tty=17, cmd: ssh -o "LogLevel ERROR" -o "Compression yes" -o "ServerAliveInterval 15" -o "ServerAliveCountMax 3" -o "StrictHostKeyChecking no" -o "UserKnownHostsFile /dev/null" -o "GlobalKnownHostsFile /dev/null" -C -o ControlMaster=auto -o ControlPersist=60s hqpc222.abc.com /usr/bin/python -c "'import codecs,os,sys;_=codecs.decode;exec(_(_(\"eNqFkc1OwzAQhM/NU+S2tmqlTuiFSJFAPSAOCClC9AAVyo9DLRLbOG5NeXq2KVKTcuC2n3bWMxrnbJ3pPjLSCEIDy/yIZBMiNNp+EJoGM5zrnUkIZzHn9Mw5G5PFbXziqtW9IPkY7BjWY/AIaNgf0L4tHLp2YZaFUBfWSwVhoephKb5EtXNF2Yphvdj1dlFKtTAHt9UKMOfsQjbPhsO9sL3U6iW92gy2Qu2lRYbb/O6Zwyabnp00iC2ZLtgU50A66fS7UGknFRrcbD/7JOGR6Arn0DOqdBc5nyY8XlKgAT7rrXSCxAwe7p8eOeevCjBOpWtsnQar7I0ce6+1EQrbBlsCjawoahInS35NGXxLgy81Jjvr1gx8CcevaMyvwWqYT/VeqP1/6r8p40nKH0t5sts=\".encode(),\"base64\"),\"zip\"))'"
[pid 2014] 16:00:41.305373 D mitogen: mitogen.ssh.Stream(u'local.2037').connect(): child process stdin/stdout=63
[pid 2014] 16:00:51.245756 D mitogen: mitogen.ssh.Stream(u'local.2037'): child process still alive, sending SIGTERM
[pid 2033] 16:00:51.246902 D mitogen: mitogen.core.Stream(u'unix_listener.2014').on_disconnect()
[pid 2033] 16:00:51.247108 D mitogen: Waker(Broker(0x7f73f4ac2dd0) rfd=14, wfd=15).on_disconnect()
[pid 2014] 16:00:51.247242 D mitogen: mitogen.core.Stream(u'unix_client.2033').on_disconnect()
hqpc222.abc.com | UNREACHABLE! => {
"changed": false,
"msg": "Connection timed out.",
"unreachable": true
}
[pid 2014] 16:00:51.288028 I mitogen: mitogen.service.Pool(0x7f73f53147d0, size=16, th='mitogen.service.Pool.7f73f53147d0.worker-12'): channel or latch closed, exitting: None
[pid 2014] 16:00:51.288404 D mitogen: Waker(Broker(0x7f73f530af50) rfd=9, wfd=11).on_disconnect()
[pid 2014] 16:00:51.288691 D mitogen: <mitogen.unix.Listener object at 0x7f73f5314450>.on_disconnect()
2018-08-01 16:00:51 [mini<strong i="11">@hq</strong> ansiblecontrol]$
рдХреЛрдИ рд╕реБрдЭрд╛рд╡ ? рдХреГрдкрдпрд╛ ~
рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдкреНрд░рдХрд╛рд░
- рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ
рдЙрддреНрддрд░ рд╕рдВрд╕реНрдХрд░рдг
ansible 2.0.0.2 config file = configured module search path = Default w/o overrides
рд╡рд┐рдиреНрдпрд╛рд╕
рдХреЛрдИ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ
рдУрдПрд╕ / рдкрд░реНрдпрд╛рд╡рд░рдг
OS X El Capitan рд╕рдВрд╕реНрдХрд░рдг 10.11.3
рд╕рд╛рд░рд╛рдВрд╢
рдореИрдВ "ssh [email protected] " рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдИрдерд░рдиреЗрдЯ рдХреЗрдмрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ ssh рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдкрдиреЗ Rasberry Pi рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдПрдХ рд╣реЛрд╕реНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕ IP рдкрддреЗ рдХреЗ рд╕рд╛рде Ansible рдЪрд▓ рд░рд╣рд╛ рд╣реИред
рдореИрдВрдиреЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЗрд╕ рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ рдХреЛ рд╡рд╛рдИрдлрд╝рд╛рдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ (рд╡рд╛рдИрдлрд╛рдИ рдЖрдИрдкреА рдкрддреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдм рдкреНрд░рддреНрдпрдХреНрд╖ рдИрдерд░рдиреЗрдЯ рдХрдиреЗрдХреНрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореБрдЭреЗ рдЧреБрдкреНрдд рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ansible рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдЬрд╛ рд░рд╣реА рд╣реИ:
`TASK [setup] ******************************************************************* fatal: [169.254.0.2]: UNREACHABLE! => {"changed": false, "msg": "ERROR! (25, 'Inappropriate ioctl for device')", "unreachable": true}`
рдХреНрдпреЛрдВрдХрд┐ I _can_ рдЯрд░реНрдорд┐рдирд▓ рд╕реЗ ssh рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрд╕ IP рдкрддреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЗрд╕ pi рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрддрд╛ рд╣реИ, рдореИрдВ рдпрд╣ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ Ansible рдореЗрдВ рдПрдХ рдмрдЧ рд╣реИред
рдкреНрд░рдЬрдирди рдХрд░рдиреЗ рдХрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛
рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ рдпрд╣ рдХрдорд╛рдВрдб рдЪрд▓рд╛рддрд╛ рд╣реВрдВ
ansible-playbook ansible-pi/playbook.yml -i ansible-pi/hosts --ask-pass --sudo -c paramiko -vvvv
рдореИрдВрдиреЗ рднреА рдХреЛрд╢рд┐рд╢ рдХреА
ansible-playbook ansible-pi/playbook.yml -i ansible-pi/hosts --ask-pass --sudo -vvvv
рдЬрд┐рд╕рд╕реЗ рдПрдХ рд╣реА рддреНрд░реБрдЯрд┐ рд╣реЛред
рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╣реЛрд╕реНрдЯ рдХрд░рддрд╛ рд╣реИ
[pis] 169.254.0.2
рдкреНрд▓реЗрдмреБрдХ
--- - name: Ansible Playbook for configuring brand new Raspberry Pi hosts: pis roles: - pi remote_user: pi sudo: yes
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рднреВрдорд┐рдХрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорд╣рддреНрд╡рд╣реАрди рд╣реИ рдХреНрдпреЛрдВрдХрд┐ ssh рдХрдиреЗрдХреНрд╢рди рдЪрд░рдг рдореЗрдВ ansible рд╡рд┐рдлрд▓ рд╣реЛ рд░рд╣рд╛ рд╣реИред
рдЕрдкреЗрдХреНрд╖рд┐рдд рдкрд░рд┐рдгрд╛рдо
рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдкреАрдЖрдИ рд╕реЗ рдЬреБрдбрд╝рдиреЗ рдФрд░ рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ (рдореИрдВ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЖрдИрдкреА рдкрддреЗ рдкрд░ рд╡рд╛рдИрдлрд╛рдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдХреЗ рдРрд╕рд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ)
рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдгрд╛рдо
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/getpass.py:83: GetPassWarning: Can not control echo on the terminal. No config file found; using defaults passwd = fallback_getpass(prompt, stream) Warning: Password input may be echoed. SSH password: raspberry [DEPRECATION WARNING]: Instead of sudo/sudo_user, use become/become_user and make sure become_method is 'sudo' (default). This feature will be removed in a future release. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg. Loaded callback default of type stdout, v2.0 1 plays in ansible-pi/playbook.yml PLAY [Ansible Playbook for configuring brand new Raspberry Pi] ***************** TASK [setup] ******************************************************************* <169.254.0.2> ESTABLISH CONNECTION FOR USER: pi on PORT 22 TO 169.254.0.2 CONNECTION: pid 2118 waiting for lock on 10 CONNECTION: pid 2118 acquired lock on 10 fatal: [169.254.0.2]: UNREACHABLE! => {"changed": false, "msg": "ERROR! (25, 'Inappropriate ioctl for device')", "unreachable": true} PLAY RECAP ********************************************************************* 169.254.0.2 : ok=0 changed=0 unreachable=1 failed=0
OpenSSH_7.9p1 рдкрд░, OpenSSL 1.1.1b, ansible 2.7.8, рдЬрдм UNREACHABLE
рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛, msg
рд╕рд╛рде рдЙрд╕ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЛ рд╕рдлрд▓ рд╣реБрдЖ ( Authenticated to
), рд▓реЗрдХрд┐рди рдПрдХ рдЯреВрдЯ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддреЗ рд╣реБрдП рдкрд╛рдЗрдк ( debug3: mux_client_read_packet: read header failed: Broken pipe
), -o ControlMaster=no
ssh_args
-o ControlMaster=no
рд╕реЗрдЯрд┐рдВрдЧ рдореЗрдВ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ рдмрд┐рдирд╛ рдкреИрд░рд╛рдорд┐рдХреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╛ ControlPersist
рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдПред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдЬрдм рдореИрдВрдиреЗ рдЕрдВрд╕рд┐рдмрд▓ рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдпрд╛ рддреЛ рдпрд╣ рдЕрдЪрд╛рдирдХ рдЦреБрд╢ рд╣реЛ рдЧрдпрд╛ред
рдореБрдЭреЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП:
рдкрд╣рд▓реЗ рдореИрдВ рдХреЗрд╡рд▓ рдЪрд▓рд╛ рд╣реИ
рд╕рд╛рдорд╛рдиреНрдп рдПрд╕рдПрд╕рдПрдЪ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореБрджреНрджреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
рдХреБрдЫ рдмрджрд▓ рдЧрдпрд╛ рд╣реИред
рдореИрдВ рдЗрд╕реЗ рдбреАрдмрдЧ рдХрд░рдиреЗ рдореЗрдВ рдХреМрди рд╕реА рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?
рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реВрдВ: