Cfengine3 - рд╡рд┐рдиреНрдпрд╛рд╕ рдкреНрд░рдмрдВрдзрди рдкреНрд░рдгрд╛рд▓реА

Habr├й рдкрд░ рдХрдИ рдмрд╛рд░ рдЙрдиреНрд╣реЛрдВрдиреЗ рдХрдардкреБрддрд▓реА рдФрд░ рд░рд╕реЛрдЗрдпрд╛ рд╡рд┐рдиреНрдпрд╛рд╕ рдкреНрд░рдмрдВрдзрди рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, рдЗрд╕ рд╡рд┐рд╖рдп рдХреЗ рдЕрдЧреНрд░рдгреА - cfengine, рдзреНрдпрд╛рди рд╕реЗ рд╡рдВрдЪрд┐рдд рд╣реИ, рдЖрдЗрдП рдЗрд╕ рдЕрдВрддрд░ рдХреЛ рд╕рдордЭрддреЗ рд╣реИрдВред

рдкрд╣рд▓реА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ cigerine рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдПрдХ рдШреЛрд╖рдгрд╛рддреНрдордХ рдврд╛рдВрдЪрд╛ рд╣реИ, рдЕрдирд┐рд╡рд╛рд░реНрдп рдирд╣реАрдВ рд╣реИред рд╣рдо рд╡рд┐рдиреНрдпрд╛рд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╕реНрддреГрдд рдЕрдиреБрдХреНрд░рдорд┐рдХ рдЪрд░рдгреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдо рд╕рд┐рд╕реНрдЯрдо рдХреА рд╡рд╛рдВрдЫрд┐рдд рд╕реНрдерд┐рддрд┐ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рд╕рднреА рд╡реЗрдм рд╕рд░реНрд╡рд░ рдирд╛рдо рд╡реЗрдм рдХреЗ рд╕рд╛рдеред * рдирдЧрдиреЗрдХреНрд╕ рдкреИрдХреЗрдЬ рдерд╛" рдпрд╛ "рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ bckup.sh рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рджрд┐рди рдХреЗ 5 рд╡реЗрдВ рдШрдВрдЯреЗ рдореЗрдВ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ * рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ * рдкреВрд░рд╛"ред Cfengine "рдкреНрд░реЛрдорд┐рд╕" рд╢рдмреНрдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, cfengine рд╕рдордп-рд╕рдордп рдкрд░ "рдорд░рдореНрдордд" рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдЧрд╛, рдФрд░ рдПрдХ рд╕рдлрд▓ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ рдХреЗ рдмрд╛рдж рднреА, рдпрд╣ рд░рд╛рдЬреНрдп рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдЧрд╛ рдФрд░ рдЕрднрд┐рд╕рд░рдг рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рд░-рдмрд╛рд░ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдЧрд╛ред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рд╡рд╛рдВрдЫрд┐рдд рдЖрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЛ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдиреЛрдбреНрд╕ рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ рдЬреЛ рдирдИ рдиреАрддрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдпрд╛ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдЖрдк рдЧреИрд░-рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдиреЛрдбреНрд╕ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред

рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдкрд░реНрдпрд╛рдкреНрдд рдкреГрд╖реНрдарднреВрдорд┐ рдХреА рдЬрд╛рдирдХрд╛рд░реА, рдЖрдЗрдП рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВред
рд╕реНрдерд╛рдкрдирд╛ рд╕рд░рд▓ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕рдордп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдбреЗрдмрд┐рдпрди рдХреЗ рд▓рд┐рдП:
cd /tmp wget http://cfengine.com/pub/gpg.key apt-key add gpg.key rm gpg.key echo "deb http://cfengine.com/pub/apt squeeze main" > \ /etc/apt/sources.list.d/cfengine-community.list apt-get update apt-get install cfengine-community 

рдЕрдм рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕рд╛рдЧрдлрд┐рди рдмрдВрдбрд▓ рд╣реЛ рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ
рдмреЗрд╕ рдмреЙрдбреА рдЬреЛ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЖрдпрд╛рдд рдХрд░рддреА рд╣реИред
cat /var/cfengine/inputs/python_virtualenv.cf:
 body common control { bundlesequence => { "python_virtualenv" }; inputs => { "cfengine_stdlib.cf", }; } bundle agent python_virtualenv { vars: "package_list" slist => { "virtualenvwrapper", "python-pip" }; "environments" slist => { "s1.example.com", "s2.example.com" }; packages: "${package_list}" package_policy => "add", package_method => generic; classes: "incorrect_$(environments)" not => fileexists("/tmp/$(environments)/bin/python") ; reports: linux:: "Virtual environment $(environments) is not installed correctly." ifvarclass => canonify("incorrect_$(environments)"); commands: linux:: "/usr/bin/virtualenv /tmp/$(environments) --no-site-packages" ifvarclass => canonify("incorrect_$(environments)"); } 

рд╣рдо рдЯрд╛рдЗрдк рдПрдЬреЗрдВрдЯ рдХреЗ рдПрдХ рдмрдВрдбрд▓ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдирд╛рдо рдХреЗ рд╕рд╛рде python_virtualenv, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдореИрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рджреЛ рд╕реНрд╡рддрдВрддреНрд░ рдЕрдЬрдЧрд░ virtualenv рд╕реНрдерд╛рдкрд┐рдд рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡реЗ /tmp/s1.example.com рдФрд░ /tmp/s2.example.com рдореЗрдВ рдмрдирд╛рдП рдЬрд╛рдПрдВрдЧреЗред рдкрд╣рд▓реЗ "рд╡рд╛рджрд╛" slist рдореЗрдВ рдЪрд░ред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рд╣рдореЗрдВ рдЕрдЬрдЧрд░ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдо рдкреИрдХреЗрдЬ рдЬреИрд╕реЗ рд╡рд╛рджреЗ рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ cigerine рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕реВрдЪреА рд╕реЗ рдЕрдзрд┐рдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрд░рддрд╛ рд╣реИ, рдЪрдХреНрд░ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ - рд╣рдо рд╕рд┐рд░реНрдл рдЕрдкрдирд╛ рдЗрд░рд╛рджрд╛ рдШреЛрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЕрдЧрд▓рд╛, рд╣рдо рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдлрд╝рд╛рдЗрд▓ рд╣реИ рдпрд╛ рдирд╣реАрдВ рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╡рд░реНрдЧ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВред рдореБрдЭреЗ рдпрд╣ рдХрд╣рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдХрдХреНрд╖рд╛рдПрдВ рдХрд╛рдлреА рдЕрдЪреНрдЫрд╛ рдирд╛рдо рдирд╣реАрдВ рд╣реИрдВ, рдпрд╣ рд╕рдВрджрд░реНрднреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕рд╣реА рд╣реЛрдЧрд╛, рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ рд╡реЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдмреВрд▓рд┐рдпрди рд╣реИрдВ - рдПрдХ рд╡рд░реНрдЧ рдЬреЛ рдХрд┐ рдкреЗрдВрдЧреБрдЗрди рдореЗрдВ рд╣реИ рдпрд╛ рдирд╣реАрдВ! рдЗрд╕рдХреЗ рдмрд╛рдж рдЯрд╛рдЗрдк рд░рд┐рдкреЛрд░реНрдЯ рдХрд╛ рд╡рд╛рджрд╛ рдЖрддрд╛ рд╣реИ, рдЗрд╕рдореЗрдВ рд╣рдо рддрдерд╛рдХрдерд┐рдд рд╣рд╛рд░реНрдб рдХреНрд▓рд╛рд╕ рд▓рд╛рдЗрдирдХреНрд╕ рджреЗрдЦрддреЗ рд╣реИрдВ, рд╣рд╛рд░реНрдб рдХреНрд▓рд╛рд╕реЗрд╕ рдХреЛ cigerine рджреНрд╡рд╛рд░рд╛ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрдирдореЗрдВ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдкреНрд░рдХрд╛рд░, IP, рд╡рд┐рддрд░рдг рдкреИрдХреЗрдЬ рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рдмрд╣реБрдд рдХреБрдЫ рд╢рд╛рдорд┐рд▓ рд╣реЛрддрд╛ рд╣реИ, рдЖрдк рдЗрдиреНрд╣реЗрдВ рдЪрд▓рд╛рдХрд░ / var / cfengine / bin / cf- рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдПрдЬреЗрдВрдЯ -v ред рд░рд┐рдкреЛрд░реНрдЯреНрд╕ рдФрд░ рдХрдорд╛рдВрдбреНрд╕ рдореЗрдВ рд╡рд╛рджрд╛ рдХреЗрд╡рд▓ рддрднреА рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдЬрдм "рдЧрд▓рдд _ $ (рд╡рд╛рддрд╛рд╡рд░рдг)" рд╡рд░реНрдЧ рд╕реНрдерд╛рдкрд┐рдд рд╣реЛ (canonify рд╡рд┐рдХрд▓реНрдк рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡рд░реНрдЧ рдореЗрдВ рдЕрд╡реИрдз рд╡рд░реНрдг рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЪреЗрдХ рд╡рд┐рдлрд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ)ред рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ:
/ var / cfengine / bin / cf-agent -K -f /var/cfengine/inputs/python_virtualenv.cf
рд╣рдореЗрдВ рдорд┐рд▓рддрд╛ рд╣реИ:
 Q: "...virtualenv /tmp": New python executable in /tmp/s1.example.com/bin/python Q: "...virtualenv /tmp": Installing distribute.................................................................................................................................................................................done. I: Last 2 quoted lines were generated by promiser "/usr/bin/virtualenv /tmp/s1.example.com --no-site-packages" Q: "...virtualenv /tmp": New python executable in /tmp/s2.example.com/bin/python Q: "...virtualenv /tmp": Installing distribute.................................................................................................................................................................................done. I: Last 2 quoted lines were generated by promiser "/usr/bin/virtualenv /tmp/s2.example.com --no-site-packages" R: Virtual environment s1.example.com is not installed correctly. R: Virtual environment s2.example.com is not installed correctly 

рд╣рдо / tmp рдореЗрдВ рджреЗрдЦрддреЗ рд╣реИрдВ рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░реЗ virtualenv рдмрдирд╛рдП рдЧрдП рд╣реИрдВред
Rm -rf /tmp/s2.example.com рд╣рдЯрд╛рдПрдВ!
рдФрд░ рд░рди / var / cfengine / bin / cf-agent -K -f /var/cfengine/inputs/python_virtualenv.cf
рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ:
 Q: "...virtualenv /tmp": New python executable in /tmp/s2.example.com/bin/python Q: "...virtualenv /tmp": Installing distribute.................................................................................................................................................................................done. I: Last 2 quoted lines were generated by promiser "/usr/bin/virtualenv /tmp/s2.example.com --no-site-packages" R: Virtual environment s2.example.com is not installed correctly. 

Cfengine рдиреЗ рдХреЗрд╡рд▓ рд░рд┐рдореЛрдЯ рд╡рд░реНрдЪреБрдЕрдирд╡ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдпрд╛, рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдкреЗрдХреНрд╖рд┐рдд рдерд╛ред
рдЬрд╛рд╣рд┐рд░ рд╣реИ, cengine рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рдФрд░ рдкреЙрд▓рд┐рд╕реА рд╣рдм рджреЛрдиреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк рд╕рд╛рдЬрд╝рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдЖрдк рдпрд╣рд╛рдВ рд╕реЗ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ http://cfengine.com/manuals/cf3-quickstart


Source: https://habr.com/ru/post/In164445/


All Articles