рдЙрддреНрддрд░ рджреЗрдиреЗ рдпреЛрдЧреНрдп рдПрдХ рдФрд░ рд╡рд┐рдиреНрдпрд╛рд╕ рдкреНрд░рдмрдВрдзрди рдкреНрд░рдгрд╛рд▓реА рд╣реИред рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕рд╛рджрдЧреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдорд╣рд╛рди рд▓рдЪреАрд▓рд╛рдкрди рд╣реИред рдФрд░ рдпреЗ рдХреЗрд╡рд▓ рд╢рдмреНрдж рдирд╣реАрдВ рд╣реИрдВ - рдЖрдЧреЗ рдореИрдВ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рджреНрд╡рд╛рд░рд╛ рдХреБрдЫ рд╕рд░рд▓ рдСрдкрд░реЗрд╢рди рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдФрд░ рдЖрдкрдХреЛ рдХреБрдЫ рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдУрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдХрд░рд╛рдКрдВрдЧрд╛ред
рддреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдореЗрдЬрдмрд╛рди рд╕рдореВрд╣ рд╣реИрдВ:
WebServersG1 | webserver1-g1, webserver2-g1 |
WebServersG2 | webserver1-g2, webserver2-g2 |
WebServersProxy | рд╡реЗрдмрд╕рд░реНрд╡рд░-рдкреНрд░реЙрдХреНрд╕реА 1, рд╡реЗрдмрд╕рд░реНрд╡рд░-рдкреНрд░реЙрдХреНрд╕реА 2 |
рдбрд╛рдЯрд╛рдмреЗрд╕ | db1, db2 |
DataBaseSlave | dbs1, dbs2 |
SomeServers | someserver1, someserver2 |
рд╣рдо рд╕рднреА рдореЗрдЬрдмрд╛рдиреЛрдВ рдХреЛ рдкрд░реНрдпрд╛рдкреНрдд рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ - рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреЗ рдЖрд╡рд╢реНрдпрдХ рд╕реЗрдЯ (htop, zsh, vim, iftop, sudo, mc, tmux, wget) рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ, рд╣рдорд╛рд░реА рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рдХреЙрдкреА рдХрд░реЗрдВ рдФрд░ рдЗрд╕ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдФрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВред
рдЖрд░рдВрдн рдХрд░рдиреЗ рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрдо рд╕реЗ рдХрдо рджреЛ рдлрд╛рдЗрд▓реЗрдВ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП - рдПрдХ
рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдлрд╛рдЗрд▓ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдореЗрдЬрдмрд╛рдиреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рдореВрд╣реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреЗ рд╣реИрдВ -
рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдФрд░ рдПрдХ
рдЯрд╛рд╕реНрдХ рдлрд╛рдЗрд▓ -
рдкреНрд▓реЗрдмреБрдХ ред
рдЗрдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХрд┐ рдЬрдм рд╣рдо рд╕рдм рдХреБрдЫ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рд╣рд░ рдЪреАрдЬ рдХреЛ рдЦреВрдмрд╕реВрд░рддреА рд╕реЗ рдЪрд▓рд╛рддреЗ рд╣реИрдВ:
ansible-playbook -i _ playbook.yml
рдЖрдЗрдП, рд╣рдорд╛рд░реЗ рдореЗрдЬрдмрд╛рдиреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ "
рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ " рдирд╛рдордХ рдПрдХ рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ:
[WebServersG1] webserver1-g1 webserver2-g1 [WebServersG2] webserver1-g2 webserver2-g2 [WebServersProxy] webserver-proxy1 webserver-proxy2 [DataBase] db1 db2 [DataBaseSlave] dbs1 dbs2 [SomeServers] someserver1 someserver2
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рдм рдХреБрдЫ рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди
WebServersG1 рдФрд░
WebServersG2 рд╕рдореВрд╣реЛрдВ рд╕реЗ рд╣рдорд╛рд░реЗ рдореЗрдЬрдмрд╛рди рдХреЗрд╡рд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕рдВрд░рдЪрдирд╛, рдХрдиреЗрдХреНрд╢рди рдХреА рд╕рдВрдЦреНрдпрд╛ рдФрд░ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рднрд┐рдиреНрди рд╣реИрдВред рдФрд░
WebServersProxy рдЙрдирд╕реЗ рдХреЗрд╡рд▓ nginx config рдФрд░ рдХрд┐рд╕реА рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдореЗрдВ рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдкрдХреЛ рддреАрдиреЛрдВ рд╕рдореВрд╣реЛрдВ рдореЗрдВ рдПрдХ рд╕рд╛рде рдХреБрдЫ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рддреЛ рдЖрдЗрдП рдЗрди рддреАрди рд╕рдореВрд╣реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреЗрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдПрдХ
рдЕрднрд┐рднрд╛рд╡рдХ рджреЗрдВ :
[WEB:children] WebServersG1 WebServersG2 WebServersProxy
рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рдВрд░рдЪрдирд╛ рджреНрд╡рд╛рд░рд╛: ansible рдПрдХ рд╕рдореВрд╣ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рдЪрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рд╕рдм рдХреБрдЫ рд╡рд┐рд╡рд░рдг рдореЗрдВ рд▓рд╛рдЗрди '[' рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ '' '' рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рдкрдВрдХреНрддрд┐ рдХреЗ рддрд╣рдд рдФрд░ рдЕрдЧрд▓реЗ рд╕рдореВрд╣ рдХреА рд╢реБрд░реБрдЖрдд рд╕реЗ рдкрд╣рд▓реЗ рд╕рдм рдХреБрдЫ рдореЗрдЬрдмрд╛рди рд╣реИред рдПрдХ рд╕рдореВрд╣ рдореЗрдВ рдмрдЪреНрдЪреЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ - рдЕрдиреНрдп рд╕рдореВрд╣ рдЬреЛ
[рд╕рдореВрд╣ рдирд╛рдо: рдмрдЪреНрдЪреЛрдВ] рдХреЗ рдмрд╛рдж рд╕реВрдЪреАрдмрджреНрдз рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдореМрдЬреВрдж рд╣реЛрддреЗ рд╣реИрдВред
рдореИрдВ рдЙрди рдЪрд░ рдкрд░ рднреА рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ рдЬрд┐рдиреНрд╣реЗрдВ рдЗрд╕ рд╕реВрдЪреА рдореЗрдВ рддреБрд░рдВрдд рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
webserver1-g1 ansible_ssh_port=5555 ansible_ssh_host=192.168.1.50
рдпрд╣рд╛рдБ рд╣рдордиреЗ
ssh port рдФрд░
ssh host рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рд╣реИред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐
рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдиреНрдп рдЪрд░ рдЗрд╕реЗ рдЕрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдЕрдкрдардиреАрдп рдмрдирд╛рддреЗ рд╣реИрдВред рд╣рд╛рдВ, рдФрд░ рдЧреИрд░-рдорд╛рдирдХ рдкреЛрд░реНрдЯ рдЗрд╕ рд░реВрдк рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╣реИрдВ:
webserver1-g1:5555
рдФрд░ рдЬрдм рд╕реЗ рд╣рдо рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ - рд╕рднреА рдореЗрдЬрдмрд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреЛрд░реНрдЯ (рдЬреИрд╕реЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ)
ansible.cfg рдореЗрдВ рдЕрд╕рд╛рдЗрди рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ
, рд▓реЗрдХрд┐рди рдмрд┐рдВрджреБ рдирд╣реАрдВред
рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рдХреЗрд╡рд▓ рдореЗрдЬрдмрд╛рдиреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдмрдирд╛рдИред рдЕрдм рдЪрд▓реЛ рдХрд╛рд░реНрдпреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдмрдирд╛рдПрдВ, рдФрд░ рдореИрдВ рдпрд╛рджреЛрдВ рдореЗрдВ рдбреБрдмрдХреА рд▓рдЧрд╛рдКрдВрдЧрд╛ред
рдкреНрд░рд╛рдЪреАрди рд╕рдордп рдореЗрдВ (рдЗрд╕ рд╡рд░реНрд╖ рдХреЗ рд▓рдЧрднрдЧ рдордИ-рдЬреБрд▓рд╛рдИ), рд╕рдВрд╕реНрдХрд░рдг 1.2 рдХреА рд░рд┐рд▓реАрдЬрд╝ рд╕реЗ рдкрд╣рд▓реЗ, рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рдХреЛрдИ рднреВрдорд┐рдХрд╛ рдирд╣реАрдВ рдереА, рд╣рдо рд╕рд╛рдзрд╛рд░рдг рдХрд╛рд░реНрдпреЛрдВ рд╕реЗ рд╕рдВрддреБрд╖реНрдЯ рдереЗ рдФрд░ рдкреНрд▓реЗрдмреБрдХ рдПрдХ рдХреНрд░рд┐рд╕рдорд╕ рдХреЗ рдкреЗрдбрд╝ рд╕реЗ рднрд░рд╛ рд╣реБрдЖ рд▓рдЧ рд░рд╣рд╛ рдерд╛ред рддрдм рднреВрдорд┐рдХрд╛рдПрдВ рджрд┐рдЦрд╛рдИ рджреАрдВ, рдФрд░ рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдПрдХ рдпрд╛ рджреЛ рд╕рдкреНрддрд╛рд╣ рдкрд╣рд▓реЗ, рд╕рдВрд╕реНрдХрд░рдг 1.3 рдореЗрдВ - рднреВрдорд┐рдХрд╛ рд╡рд┐рд░рд╛рд╕рддред рдФрд░ рд╣рдо, рд╕рдЪреНрдЪреЗ рдЬреЗрдбреА рдХреЗ рд░реВрдк рдореЗрдВ, рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЬреЛ рднреА рд╣реИ рдЙрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдФрд░ рдЖрдЗрдП рдЕрдВрдд рдореЗрдВ рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рдпреЗ рдкреНрд▓реЗрдмреБрдХ рдФрд░ рднреВрдорд┐рдХрд╛рдПрдВ рдХреНрдпрд╛ рд╣реИрдВ, рдЕрдиреНрдпрдерд╛ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИред
Playbooks рдХрд┐рд╕реА рднреА рдЪреАрдЬ рдХрд╛ рдПрдХ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рд╕реЗрдЯ рд╣реИред рд╡реЗ, рд╢реЗрдл рдХреЗ рд╡рд┐рдкрд░реАрдд, рдПрдХ рдмрд╛рд░ рдФрд░ рдХреЗрд╡рд▓ рдЖрдкрдХреА рдЖрдЬреНрдЮрд╛ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХрд╛рд░реНрдп рдХреЛ рдореБрдХреБрдЯ рдореЗрдВ рд╕реЗрдЯ рд╣реЛрдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред рдкрд╣рд▓реЗ, рдПрдХ рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ рдХрд╛ рдЕрд░реНрде рдХрд╛рд░реНрдпреЛрдВ рдХреА рдПрдХ рдореВрд▓ рд╕реВрдЪреА рдереА, рд▓реЗрдХрд┐рди рдЕрдм рд╡реЗ рдЙрди рднреВрдорд┐рдХрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд┐рдВрджреБ рдмрди рдЧрдП рд╣реИрдВ рдЬрд┐рдирдХреА рд╣рдореЗрдВ рдЬрд╝рд░реВрд░рдд рд╣реИред
рд░реЛрд▓реНрд╕ , рдмрджрд▓реЗ рдореЗрдВ, рдПрдХ рдорд╛рдирдХ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ рдзрдХреЗрд▓ рджрд┐рдП рдЧрдП рдХрд╛рд░реНрдпреЛрдВ, рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕, рдЯреНрд░рд┐рдЧрд░ рд╣реИрдВрдбрд▓рд░, рдЪрд░, рдлрд╛рдЗрд▓реЗрдВ рдФрд░ рд▓рд┐рдВрдХ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИрдВред рд░реЛрд▓реНрд╕ рдХреЛ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рддрд╛рд░реНрдХрд┐рдХ рд╕рдореВрд╣реЛрдВ рдореЗрдВ рдмрд╛рдВрдЯрд╛ рдЧрдпрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдКрдкрд░ рджрд┐рдП рдЧрдП рдХрд╛рд░реНрдп рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░, рдореИрдВ рдЗрд╕ рддрд░рд╣ рдХреА рднреВрдорд┐рдХрд╛рдПрдВ рдирд┐рднрд╛рдКрдВрдЧрд╛:
1) рдкреВрд░реНрд╡ рдкреНрд░рд╢рд┐рдХреНрд╖рдг - рд╡рд┐рднрд┐рдиреНрди рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛, рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрдирд╛рдирд╛, рд╕реНрдерд╛рди рдмрдирд╛рдирд╛, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЙрдкреА рдХрд░рдирд╛, рдЖрджрд┐ред
2) рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╡рд╛рдВрдЫрд┐рдд рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдФрд░ рдЗрд╕рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдирд╛
3) рдЖрд╡рд╢реНрдпрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕рдВрд░рдЪрдирд╛ рдмрдирд╛рдирд╛, рдЧреАрддрд╛ рдХреА рдирдХрд▓ рдХрд░рдирд╛, рдЖрджрд┐ред
рддреЛ, рдЪрд▓рд┐рдП
рдЕрдм рддрдХ рдХреЗрд╡рд▓
preconf рднреВрдорд┐рдХрд╛ рдХреЗ рд╕рд╛рде main.yml
playbook рдмрдирд╛рдирд╛ рд╢реБрд░реВ
рдХрд░рддреЗ рд╣реИрдВ - hosts: all roles: - preconf tags: preconf
рдпрд╣рд╛рдВ рд╣рдордиреЗ рд╕рднреА 'рд╕рднреА' рдореЗрдЬрдмрд╛рдиреЛрдВ рдХреЛ рдкреНрд░реАрдХреЙрди рднреВрдорд┐рдХрд╛ рд╕реМрдВрдкреА рдФрд░ рдкреНрд░реАрдХреЛрдл рдЯреИрдЧ рдХреЛ рдЬреЛрдбрд╝рд╛ред рдмрд╛рдж рдореЗрдВ рдкреНрд▓реЗрдмреБрдХ рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП
рдЯреИрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬрдм ansible рднреВрдорд┐рдХрд╛ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рджреЗрдЦрддрд╛ рд╣реИ, рддреЛ рд╡рд╣ //les рдореЗрдВ рдЙрд╕реА рдирд╛рдо рдХреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рд╣реЛрдЧрд╛ ред/roles/preconf
рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рднреВрдорд┐рдХрд╛ рд╕рдВрд░рдЪрдирд╛ рддреИрдпрд╛рд░ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдЕрд░реНрдерд╛рддреН: рдХрд╛рд░реНрдп / main.yml
рдпрд╣ рдореБрдЦреНрдп рдлрд╝рд╛рдЗрд▓ рд╣реИ рдЬреЛ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддреА рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, 'рдЯреЗрдореНрдкреНрд▓реЗрдЯ' рдирд╛рдордХ рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореМрдЬреВрдж рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╣рдо
рдХреЙрдиреНрдлрд┐рдЧ рдлрд╛рдЗрд▓реНрд╕, 'рдлрд╛рдЗрд▓реНрд╕' рдХреЗ рд▓рд┐рдП рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рд╣рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ
рдлрд╛рдЗрд▓ рдХреА рдЬрд░реВрд░рдд рд╣реЛрдЧреА, 'рд╣реИрдВрдбрд▓рд░' - рд╡рд╣реА рдкреНрд░рд╕рд┐рджреНрдз рдЯреНрд░рд┐рдЧрд░ рд╣реИрдВрдбрд▓рд░, рд╕рд╛рде рд╣реА рдореЗрдЯрд╛ / main.yml рдЬрд┐рд╕рдореЗрдВ рд╣рдо рднреВрдорд┐рдХрд╛ рд╕рдВрджрд░реНрднреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЪрд░ рднреВрдорд┐рдХрд╛ рдЪрд░ рд╣реЛрддреЗ рд╣реИрдВред
рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХреНрд░рдо рд╕реЗ рд╕реБрд▓рдЭрд╛рдПрдВ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ, рддреЛ рдЖрдк рдЕрдкрдиреЗ рд╕рд┐рд░ рдХреЛ рджрд╛рдПрдВ рд╕реЗ рдмрд╛рдПрдВ рдЭрдЯрдХреЗ рдХреЗ рд╕рд╛рде рдиреАрдЪреЗ рд╕реЗрд░ рдХреЗ рдкрд╛рда рдХреЛ рддреЗрдЬреА рд╕реЗ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред
рддреЛ, рдХрд╛рд░реНрдпред
рд╣рдорд╛рд░реА рдкреВрд░реНрд╡-рднреВрдорд┐рдХрд╛ рдХреЗ рд▓рд┐рдП, рдлрд╝рд╛рдЗрд▓
рдмрдирд╛рдПрдВ ред/roles/preconf/tasks/main.ymlрдЖрдорддреМрд░ рдкрд░, рдХрд╛рд░реНрдп рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреЗ рд╣реИрдВ:
- name: : .
рдмрд╣реБрдд рд╕рд╛рд░реЗ
рдореЙрдбреНрдпреВрд▓ рд╣реИрдВ , рд╡реЗ рд╣рд░
рд╕реНрд╡рд╛рдж рдФрд░ рд░рдВрдЧ рдХреЗ рд▓рд┐рдП рд╣реИрдВ ред рдореЙрдбреНрдпреВрд▓ рдХреА рдорджрдж рд╕реЗ, рд╣рдо рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рдПрдХ рдорд╢реАрди рдХреЛ рддреИрдирд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╢реЗрд▓ рдХрдорд╛рдВрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдлрд╛рдЗрд▓ рдФрд░ рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдХреЙрдкреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХрддрд╛рд░реЛрдВ рдореЗрдВ рд╕рдВрджреЗрд╢ рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ, рдиреЗрдЯрд╡рд░реНрдХ рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЪреИрдЯ рдореИрд╕реЗрдЬ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдмрд╣реБрдд рдХреБрдЫред рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдкрд░ рд░рд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╖рдп рд╣реИ, рдЬреИрд╕реЗ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рд▓рд┐рдЦрдирд╛ - рдпрд╣ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИред
рдЗрд╕ рдмреАрдЪ, рдХреБрдЫ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред
- name: installing zsh apt: pkg=zsh
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдордиреЗ рдЕрдкрдиреЗ рдбреЗрдмрд┐рдпрди рд╕рд░реНрд╡рд░ рдкрд░ zsh рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
apt рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред
рдмреЗрд╢рдХ, рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдХрд╛рд░реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рд╕реВрдЪреА рдХреЛ рд╕реНрдкреИрдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдРрд╕реА рдлрд╛рдЗрд▓реЗрдВ рдмрд╣реБрдд рдЦрд░рд╛рдм рддрд░реАрдХреЗ рд╕реЗ рдкрдврд╝реА рдЬрд╛рддреА рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдПрдХ рдХрддрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ рдЬрд┐рд╕реЗ '
with_items ' рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
- name: installing zsh apt: pkg=$item with_items: - zsh - htop - sudo - iftop - tcpdump - mc - wget - vim - tmux - facter
YAML рд╕рд┐рдВрдЯреИрдХреНрд╕ рдореЗрдВ, рдпрджрд┐ рдореИрдВ рдХреБрдЫ рднреА рднреНрд░рдорд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рд╕рдорд╛рди рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдПрдХ рд╕рд░рдгреА рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рдФрд░ рдЗрд╕ рд╕рд░рдгреА рдХреЗ рддрддреНрд╡, рдЬреИрд╕реЗ рдХрд┐ рдмрджрд▓реЗ рдореЗрдВ xargs рд╕реЗ рдЧреБрдЬрд░рддреЗ рд╣реИрдВ, рдЪрд░
рдЖрдЗрдЯрдо рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рд╣рдо рдКрдкрд░ рдХрд╣рддреЗ рд╣реИрдВ рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдирдП рдорд╛рди рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдп рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рд╕реВрдЪреА рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рддрдХ рд╕рдордп рдХреЗ рдмрд╛рджред
рдЕрдм рд╣рдо рд╕рдорд░реНрдерди рд╡рд┐рднрд╛рдЧ рдХреЗ рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдмрдирд╛рдПрдВрдЧреЗ рдФрд░ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдХреБрдЫ рдРрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:
- name: Add User Pupkin user: name='pupkin'
рддреЛ рд╣рдорд╛рд░реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдПрдХ рдзрдорд╛рдХреЗ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛ред рд▓реЗрдХрд┐рди рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреБрдкрдХрд┐рди рдЬрд╝рд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рд╕реБрдбреЛ рд╕рдореВрд╣ рдХрд╛ рд╕рджрд╕реНрдп рдмрдиреЗрдВ? рдФрд░ рдЪрд▓реЛ рдЗрд╕реЗ рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ 'рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛' рдореЙрдбреНрдпреВрд▓ рд╕рдм рдХреБрдЫ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред
- name: Add User Pupkin user: name='pupkin' shell='/bin/zsh' groups='sudo'
рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА with_items рд╕реАрдЦрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВрдЧреЗ ... рд▓реЗрдХрд┐рди ... рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рджреЛ рдЪрд░ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ...
рдХреБрдЫ рднреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИред рдЙрддреНрддрд░ рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИрд╢ - 'рдХреБрдВрдЬреА: рдорд╛рди' рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд░рдгрд┐рдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдпрд╣ jinja2 рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╣реИрд╢ рд░рд┐рдХреЙрд░реНрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред
- name: Add BestAdminsTeam user: name={{ item.user }} shell={{ item.shell }} groups='sudo' with_items: - { user: 'pupkin', shell: '/bin/zsh' } - { user: 'oldfag', shell: '/bin/sh' }
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдордиреЗ рдХреНрдпрд╛ рдХрд┐рдпрд╛? рд╣рдордиреЗ рдЗрд╕ рддрд░рд╣ рдХреА рдПрдХ рд╕рд░рдгреА рдмрдирд╛рдИ:
{ {user: 'pupkin', shell: '/bin/zsh' }, { user: 'oldfag', shell: '/bin/sh' } }
рдЬрд┐рд╕рд╕реЗ рд╣рдо рдПрдХ рд╕рдордп рдореЗрдВ рдПрдХ рддрддреНрд╡ рд▓реЗрдВрдЧреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЪрд░ $ рдЖрдЗрдЯрдо рдкрд░ рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВрдЧреЗред рдпрд╛, jinja2 рднрд╛рд╖рд╛ рдореЗрдВ - {{рдЖрдЗрдЯрдо}})ред рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдХреНрд░рдорд╢рдГ рд╣реИрд╢ рддрддреНрд╡реЛрдВ - {{item.user}} рдФрд░ {{item.shell}} рдХреЛ рдЦреЛрд▓реЗрдВрдЧреЗред рдпрд╣реА рд╣реИ, рд╣рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдЪрд░ рдХреА рдПрдХ рд╕реБрд╕рдВрдЧрдд рд╕реВрдЪреА рдорд┐рд▓рддреА рд╣реИред
рдЕрдм рд╣рдо рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХреБрдВрдЬрд┐рдпрд╛рдБ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдореЙрдбреНрдпреВрд▓ '
рдЕрдзрд┐рдХреГрдд_рдХреА ' рд╣реИред
- name: Add BestAdminsKey authorized_key: user={{ item.user }} key="{{item.key}}" with_items: - { user: 'pupkin', key: 'ssh-rsa pupkin_pub_key' } - { user: 'oldfag', key: 'ssh-rsa oldfag_pub_key' }
рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдпрд╣ рдЙрд╕реА рддрд░рд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рд╣рд░ рдмрд╛рд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдереЛрдбрд╝рд╛ рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ: рдЯреАрдо рдХреЗ рдХрд┐рд╕реА рдирдП рд╕рджрд╕реНрдп рдХреЛ рдЬреЛрдбрд╝рдирд╛ рднреВрд▓ рдЬрд╛рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ рдФрд░ рдореБрдЭреЗ рдЖрдкрдХреЛ рдХрд┐рд╕реА рддрд░рд╣ рдЪрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдпрд╣рд╛рдВ рдпрд╣ рд╣реИред
рдЖрдЗрдП рдПрдХ рдЪрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдЕрдкрдиреЗ рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЙрдирдХреА рдХреБрдВрдЬрд┐рдпреЛрдВ, рдЧреЛрд▓реЗ рдХреЗ рд╕рд╛рде рд░рдЦрддреЗ рд╣реИрдВ, рд╕рдВрднрд╡рддрдГ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрде рдФрд░ рдмрд╛рдХреА рд╕рдм рдХреБрдЫред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдПрдХ рдЪрд░ рдореЗрдВ рд▓рд╛рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдЪрд░ рдХреЛ рд╕реНрд╡рдпрдВ рдХрд╣рд╛рдВ рд░рдЦрд╛ рдЬрд╛рдП?
рдЗрд╕рдХреЗ рд▓рд┐рдП Ansible рдХреЗ рдкрд╛рд╕ рдХрдИ рд╕рдорд╛рдзрд╛рди рд╣реИрдВред
рдЖрдк рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╣реЛрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдЪрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред/host_vars/host_name - рдпрд╣ рд╣рдорд╛рд░реЗ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИ
рдЖрдк рдореЗрдЬрдмрд╛рди рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХреЗ рд▓рд┐рдП рдЪрд░ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ (рд╕рдореВрд╣, рдореИрдВ рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реВрдВ, рд╣рдордиреЗ рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХрд┐рдпрд╛ рдерд╛) рдФрд░ рдЙрдиреНрд╣реЗрдВ / .group_vars/group_name рдореЗрдВ рдбрд╛рд▓ рджрд┐рдпрд╛ - рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╕рднреА рд╕рдореВрд╣ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдПрдХ рдЪрд░ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣ "рд╢реБрджреНрдз рдХрд╛рд░реНрдп" рдирд╣реАрдВ рд╣реИред
рдЖрдк рдЪрд░ рдХреЛ рд╕реАрдзреЗ playbooks рдореЗрдВ рдЕрд╕рд╛рдЗрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣ рдЕрд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд▓рдЧрддрд╛ рд╣реИред
рдкреНрд░рддреНрдпреЗрдХ рднреВрдорд┐рдХрд╛ рдореЗрдВ рдбрд┐рдлреЙрд▓реНрдЯреНрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ "рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди" рднреА рд╣реЛрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдорд╛рд░реА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рдФрд░ рдЕрдВрдд рдореЗрдВ, рдЪрд░ рднреВрдорд┐рдХрд╛рдПрдВ - рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╣реИред
рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ ред/roles/main/variables/main.yml рдЬрд┐рд╕рдореЗрдВ рд╣рдо рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
ssh_super_team: - { user: 'pupkin', key: 'ssh-rsa pupkin_pub_key', shell: '/bin/zsh'} - { user: 'oldfag', key: 'ssh-rsa oldfag_pub_key', shell: '/bin/sh' }
рдЕрдм рдХрд╛рд░реНрдп рдореЗрдВ рд╣рдо рдЗрд╕ рддрд░рд╣ $ ssh_super_team рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
- name: Add BestAdminsTeam user: name={{ item.user }} shell={{ item.shell }} groups='sudo' with_items: - $ssh_super_team - name: Add BestAdminsKey authorized_key: user={{ item.user }} key="{{item.key}}" with_items: - $ssh_super_team
рдЦреИрд░, рд╣рд░ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП - рд╣рдорд╛рд░реЗ .vimrc рдлрд╝рд╛рдЗрд▓ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдПрдБ - рджреЛрдиреЛрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдиред 'Vimrc' рдирд╛рдо рдХреА рдлрд╝рд╛рдЗрд▓ рдХреЛ ./roles/main/files/ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд░рдЦреЗрдВ рдФрд░ рдЗрд╕ рдХрд╛рд░реНрдп рдХреЛ рдХрд░реЗрдВ:
- name: copy vimrc file copy: src=тАЭvimrcтАЭ dest=тАЭ/home/{{item.user}}/.vimrcтАЭ with_items: - $ssh_super_team
рджреЗрдЦрд╛ред
рд╡реИрд╕реЗ, рдореИрдВ рдХрднреА-рдХрднреА рдлрд┐рд░ рд╕реЗ рдкрдврд╝рддрд╛ рд╣реВрдВ рдЬреЛ рдореИрдВ рд▓рд┐рдЦрддрд╛ рд╣реВрдВ - рдпрд╣ рд╕реНрд╡реЗрдЪреНрдЫрд╛ рд╕реЗ рдирд┐рдХрд▓рд╛ред рдпрд╣ рд╕рдм рдХреБрдЫ рдмрдВрдж рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ рдЬреЛ рдЧреЛрд▓ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рддреБрд░рдВрдд рдирдЧреАрди рд╡рд┐рдиреНрдпрд╛рд╕ рдкрд░ рдХреВрдж рдЬрд╛рдКрдВрдЧрд╛:
рдЯреНрд░реЗрд╕рд┐рдВрдЧ рдкреЗрдкрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, nginx рднреВрдорд┐рдХрд╛ рдмрдирд╛рдПрдВ рдФрд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд┐рдЦреЗрдВ ред/roles/nginx/tasks/main.yml:
- name: install nginx apt: pkg='nginx'
рд╣рдореНрдо, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рднреА nginx рд╕рд░реНрд╡рд░реЛрдВ рдкрд░ рд╕рдорд╛рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ? рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рдЪрд▓реЛ рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд╕рд╛рде рдЖрддреЗ рд╣реИрдВ - ansible рдореЗрдВ рдЖрдкрдХреЛ рдХрдИ jinja2 рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
/ .Les/nginx/templates/ рдореЗрдВ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕реЗ nginx_site_conf.p2 рдирд╛рдо рджреЗрдВ
рдФрд░ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╕рд╛рдордЧреНрд░реА рдмрдирд╛рддреЗ рд╣реИрдВ:
server { listen 80; server_name {{ item.sitename }}; root тАЬ/var/wwwтАЭ }
рдЕрдЧрд▓рд╛, рд╣рдореЗрдВ рдЙрди рдЪрд░ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рд╣реЛрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдЕрджреНрд╡рд┐рддреАрдп рд╣реИрдВ: ./host_vars/host_name рдкрд░ рдлрд╝рд╛рдЗрд▓реЗрдВ рдЕрдкрд▓реЛрдб рдХрд░реЗрдВ
nginx: - { sitename: тАЬwww.example.comтАЭ }
рдФрд░ рдЗрд╕ рднреВрдорд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЪрд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ: рдлрд╝рд╛рдЗрд▓ рдореЗрдВ ред/roles/nginx/defaults/main.yml
nginx: - { sitename: тАЬdefaultтАЭ }
рдЕрдм рдПрдХ рдХрд╛рд░реНрдп рдмрдирд╛рдПрдБ:
- name: nginx config for sites template: src=тАЭnginx_site_conf.j2тАЭ dest=тАЭ/etc/nginx/sites-enabled/{{ item.sitename }} with_items: - $nginx notify: - restart nginx
рдФрд░ ansible, рдЬрдм рдЗрд╕ рдХрд╛рд░реНрдп рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ $ nginx рдЪрд░ рдХреЗ рд╕рд╛рде "nginx_site_conf.j2" рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдХреЙрдкреА рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдЧрд╛, рдЬрд┐рд╕реЗ рдпрд╛ рддреЛ рд╣реЛрд╕реНрдЯ рдЪрд░ рд╕реЗ рдпрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рднреВрдорд┐рдХрд╛ рдЪрд░ рд╕реЗ рдкрдврд╝рд╛ рдЬрд╛рдПрдЧрд╛ред рдФрд░ рдпрджрд┐ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдорд╢реАрди рдкрд░ рдореМрдЬреВрдж рд╡рд┐рдиреНрдпрд╛рд╕ рд╕реЗ рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдПрдХ рд╣реИрдВрдбрд▓рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ :/roles/nginx/handlers/main.yml
- name: restart nginx action: service name=nginx state=reloaded
рдЕрдм рд╣рдо рдЗрди рджреЛ рдЬрд╛рдирдмреВрдЭрдХрд░ рд╕рд░рд▓реАрдХреГрдд рднреВрдорд┐рдХрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░реЗрдВрдЧреЗ, рдЬреЛ рд╣реЛрд╕реНрдЯреНрд╕
рд╡реЗрдмрд╕рд░реНрд╡рд┐рд╕рдЬреА 1 рдХреЗ рд╕рдореВрд╣ рдХреЗ рд▓рд┐рдП рдЕрджреНрд╡рд┐рддреАрдп рд╣реИред рдЕрдм рд╣рдо рдХреБрдЫ рднреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рджреЛ рддреИрдпрд╛рд░ рднреВрдорд┐рдХрд╛рдУрдВ рдХреА рдПрдХ рдХрдбрд╝реА рдмрдирд╛рдПрдВред рднреВрдорд┐рдХрд╛ / myapp / рдореЗрдЯрд╛ / main.yml рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд▓рд┐рдЦреЗрдВ:
--- dependencies: - { role: preconf } - { role: nginx }
рдФрд░ рдЕрдВрдд рдореЗрдВ,
playbook.yml playbook: - hosts: WebServersG1 roles: - WebServersG1
рд╡реИрд╕реЗ, рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреМрд░рд╛рди, рдЖрдк рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЗрд╕ рднреВрдорд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╣рдо рдЕрдЧрд▓реА рдмрд╛рд░ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ, рд╕рд╛рде рд╣реА рдирд┐рд░реНрднрд░рддрд╛, рдЬрдЯрд┐рд▓ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдХрд┐рд╕реА рдХрд╛рд░реНрдп рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдЬрд╛рдВрдЪ, рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рд╕рдорд╛рдирд╛рдВрддрд░, рдФрд░ рдмрд╣реБрдд рдХреБрдЫред
рдЗрд╕ рдмреАрдЪ, рдЖрдк рдЙрддреНрдХреГрд╖реНрдЯ рдХреЛ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ, рджреВрд╕рд░реЛрдВ рдХреЛ рдирд╣реАрдВ, рдкреНрд░рд▓реЗрдЦрди:
www.ansibleworks.com/docsPS рдореЗрд░рд╛ рдЖрдВрддрд░рд┐рдХ рд╕рдВрдкрд╛рджрдХ рдЫреБрдЯреНрдЯреА рдкрд░ рдЪрд▓рд╛ рдЧрдпрд╛ред рдореИрдВ рдЧрд▓рддрд┐рдпреЛрдВ рдФрд░ рдЕрд╕рдорд╛рди рд▓рд┐рдЦрд╛рд╡рдЯ рдХреЗ рд▓рд┐рдП рдорд╛рдлреА рдорд╛рдВрдЧрддрд╛ рд╣реВрдВред рдореИрдВ рд╣рдореЗрд╢рд╛ рдкреАрдПрдо рдХреЛ рдкрдврд╝рддрд╛ рд╣реВрдВ рдФрд░ рд╣рдореЗрд╢рд╛ рд╕реБрдзрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП "рдзрдиреНрдпрд╡рд╛рдж" рдХрд╣рддрд╛ рд╣реВрдВред