āĻāĻŋāĻā§āĻā§āĻˇāĻŖ āĻāĻā§ āĻāĻŽāĻžāĻā§ āĻāĻāĻāĻŋ āĻ°ā§āĻ˛ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤ āĻāĻ°āĻ¤ā§ āĻŦā§āĻļ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻāĻ¤ā§āĻ¤āĻ°āĻ¯ā§āĻā§āĻ¯ āĻĒā§āĻ˛ā§āĻŦā§āĻ āĻ˛āĻŋāĻāĻ¤ā§ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛āĨ¤ āĻāĻŦāĻ, āĻāĻļā§āĻāĻ°ā§āĻ¯āĻāĻ¨āĻāĻāĻžāĻŦā§, āĻāĻŽāĻŋ āĻāĻāĻāĻŋ āĻ¸āĻšāĻ āĻ§āĻžāĻĒā§ āĻ§āĻžāĻĒā§ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛ āĻā§āĻāĻā§ āĻĒāĻžāĻāĻ¨āĻŋāĨ¤ āĻāĻŽāĻŋ āĻā§ āĻāĻāĻā§ āĻ¤āĻž āĻ¨āĻž āĻŦā§āĻā§ āĻ āĻ¨ā§āĻ¯ āĻāĻžāĻ°āĻ āĻĒā§āĻ˛ā§āĻŦā§āĻāĻāĻŋ āĻ āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻāĻ°āĻ¤ā§ āĻāĻžāĻāĻ¨āĻŋ āĻāĻŦāĻ āĻļā§āĻˇ āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻāĻŽāĻžāĻā§ āĻĄāĻā§āĻŽā§āĻ¨ā§āĻā§āĻļāĻ¨āĻāĻŋ āĻĒāĻĄāĻŧāĻ¤ā§ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛, āĻ¸āĻŦāĻāĻŋāĻā§ āĻ¨āĻŋāĻā§āĻ āĻ¸āĻāĻā§āĻ°āĻš āĻāĻ°āĻ¤ā§ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛āĨ¤ āĻ¸āĻŽā§āĻāĻŦāĻ¤ āĻāĻŽāĻŋ āĻāĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻāĻŋāĻ° āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ā§ āĻāĻ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻŋāĻā§ āĻĻā§āĻ°ā§āĻ¤āĻ¤āĻ° āĻāĻ°āĻ¤ā§ āĻāĻžāĻāĻā§ āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋāĨ¤
āĻĒā§āĻ°āĻĨāĻŽ āĻāĻŋāĻ¨āĻŋāĻ¸āĻāĻŋ āĻŦā§āĻāĻ¤ā§ āĻšāĻŦā§ āĻ¯ā§ āĻāĻ¨āĻ¸āĻŋāĻŦāĻ˛ āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻāĻāĻŋ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻāĻ¨āĻ āĻāĻ¨ā§āĻāĻžāĻ°āĻĢā§āĻ¸ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°ā§ āĻ¯āĻžāĻ¤ā§ SSH āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻāĻāĻāĻŋ āĻĻā§āĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§ āĻāĻ°ā§āĻŽā§āĻ° āĻāĻāĻāĻŋ āĻĒā§āĻ°ā§āĻŦāĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŋāĻ¤ āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ āĻāĻ°āĻž āĻ¯āĻžāĻ¯āĻŧāĨ¤ āĻāĻāĻžāĻ¨ā§ āĻā§āĻ¨ āĻāĻžāĻĻā§ āĻ¨ā§āĻ, āĻāĻĒāĻ¨āĻŋ āĻāĻāĻāĻŋ āĻĒā§āĻ˛āĻžāĻāĻāĻ¨ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŦā§āĻ¨ āĻ¨āĻž āĻāĻŦāĻ āĻŦāĻžāĻā§āĻ¸ā§āĻ° āĻŦāĻžāĻāĻ°ā§ āĻĄāĻāĻžāĻ°, āĻŽāĻ¨āĻŋāĻāĻ°āĻŋāĻ āĻāĻŦāĻ āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻāĻŋāĻ¨āĻŋāĻ¸āĻĒāĻ¤ā§āĻ° āĻ¸āĻš āĻāĻĒāĻ¨āĻžāĻ° āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻāĻŋāĻ° āĻāĻāĻāĻŋ āĻļā§āĻ¨ā§āĻ¯ āĻĄāĻžāĻāĻ¨āĻāĻžāĻāĻŽ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻž āĻĒā§āĻ¤ā§ āĻĒāĻžāĻ°āĻŦā§āĻ¨ āĻ¨āĻžāĨ¤ āĻāĻāĻāĻŋ āĻĒā§āĻ˛ā§āĻŦā§āĻ āĻ˛ā§āĻāĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻĒāĻ¨āĻžāĻā§ āĻ āĻŦāĻļā§āĻ¯āĻ āĻāĻžāĻ¨āĻ¤ā§ āĻšāĻŦā§ āĻāĻĒāĻ¨āĻŋ āĻ āĻŋāĻ āĻā§ āĻāĻ°āĻ¤ā§ āĻāĻžāĻ¨ āĻāĻŦāĻ āĻā§āĻāĻžāĻŦā§ āĻāĻāĻŋ āĻāĻ°āĻŦā§āĻ¨āĨ¤ āĻāĻ āĻāĻžāĻ°āĻŖā§āĻ āĻāĻŽāĻŋ āĻāĻŋāĻāĻšāĻžāĻŦ āĻĨā§āĻā§ āĻ¤ā§āĻ°āĻŋ āĻĒā§āĻ˛ā§āĻŦā§āĻ āĻŦāĻž āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻā§āĻ˛āĻŋāĻ° āĻŽāĻ¤ā§ āĻ¸āĻ¨ā§āĻ¤ā§āĻˇā§āĻ āĻ¨āĻ: "āĻāĻĒāĻŋ āĻāĻ°ā§ āĻāĻžāĻ˛āĻžāĻ¨, āĻāĻāĻŋ āĻāĻžāĻ āĻāĻ°āĻŦā§āĨ¤"
ā§āĻ¯āĻšā§?
āĻāĻŽāĻŋ āĻāĻā§āĻ āĻŦāĻ˛ā§āĻāĻŋ, āĻāĻāĻāĻŋ āĻĒā§āĻ˛ā§āĻŦā§āĻ āĻ˛āĻŋāĻāĻ¤ā§ āĻšāĻ˛ā§ āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻžāĻ¨āĻ¤ā§ āĻšāĻŦā§ āĻāĻĒāĻ¨āĻŋ āĻā§ āĻāĻ°āĻ¤ā§ āĻāĻžāĻ¨ āĻāĻŦāĻ āĻā§āĻāĻžāĻŦā§ āĻāĻ°āĻŦā§āĻ¨āĨ¤ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻŋ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻ¤āĻž āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖ āĻāĻ°āĻž āĻ¯āĻžāĻāĨ¤ āĻāĻāĻāĻŋ āĻ°ā§āĻ˛ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻžāĻĻā§āĻ° āĻŦā§āĻļ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻĒā§āĻ¯āĻžāĻā§āĻā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻŦā§: nginx, postgresql (redis, āĻāĻ¤ā§āĻ¯āĻžāĻĻāĻŋ)āĨ¤ āĻāĻĒāĻ°āĻ¨ā§āĻ¤ā§, āĻāĻŽāĻ°āĻž āĻ°ā§āĻŦāĻŋ āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨. āĻāĻāĻŋ rbenv (rvm, asdf...) āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻž āĻāĻžāĻ˛āĨ¤ āĻ°ā§āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻ āĻ¸āĻŦ āĻāĻžāĻ˛āĻžāĻ¨ā§ āĻ¸āĻŦāĻ¸āĻŽāĻ¯āĻŧ āĻāĻāĻāĻŋ āĻāĻžāĻ°āĻžāĻĒ āĻ§āĻžāĻ°āĻŖāĻž, āĻ¤āĻžāĻ āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻāĻāĻŋ āĻĒā§āĻĨāĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻāĻŦāĻ āĻ¤āĻžāĻ° āĻ āĻ§āĻŋāĻāĻžāĻ°āĻā§āĻ˛āĻŋ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻāĻ° āĻĒāĻ°ā§, āĻāĻĒāĻ¨āĻžāĻā§ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻĄ āĻāĻĒāĻ˛ā§āĻĄ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§, nginx, postgres āĻāĻ¤ā§āĻ¯āĻžāĻĻāĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°āĻā§āĻ˛āĻŋ āĻ āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻāĻŦāĻ āĻāĻ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻā§āĻ˛āĻŋ āĻļā§āĻ°ā§ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤
āĻĢāĻ˛āĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻāĻ°ā§āĻŽā§āĻ° āĻā§āĻ°āĻŽ āĻ¨āĻŋāĻŽā§āĻ¨āĻ°ā§āĻĒ:
- āĻ°ā§āĻ āĻšāĻŋāĻ¸ā§āĻŦā§ āĻ˛āĻāĻāĻ¨ āĻāĻ°ā§āĻ¨
- āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻĒā§āĻ¯āĻžāĻā§āĻ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°ā§āĻ¨
- āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻ¨, āĻ āĻ§āĻŋāĻāĻžāĻ° āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°ā§āĻ¨, ssh āĻā§
- āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻĒā§āĻ¯āĻžāĻā§āĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°ā§āĻ¨ (nginx āĻāĻ¤ā§āĻ¯āĻžāĻĻāĻŋ) āĻāĻŦāĻ āĻāĻžāĻ˛āĻžāĻ¨
- āĻāĻŽāĻ°āĻž āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§ āĻāĻāĻāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŋ (āĻāĻĒāĻ¨āĻŋ āĻ āĻŦāĻŋāĻ˛āĻŽā§āĻŦā§ āĻāĻāĻāĻŋ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨)
- āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻ˛āĻāĻāĻ¨ āĻāĻ°ā§āĻ¨
- rbenv āĻāĻŦāĻ āĻ°ā§āĻŦāĻŋ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°ā§āĻ¨
- āĻŦāĻžāĻ¨ā§āĻĄāĻ˛āĻžāĻ° āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻž āĻšāĻā§āĻā§
- āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻā§āĻĄ āĻāĻĒāĻ˛ā§āĻĄ āĻāĻ°āĻž āĻšāĻā§āĻā§
- āĻĒā§āĻŽāĻž āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻāĻžāĻ˛ā§ āĻāĻ°āĻž āĻšāĻā§āĻā§
āĻ āĻ§āĻŋāĻāĻ¨ā§āĻ¤ā§, āĻļā§āĻˇ āĻ§āĻžāĻĒāĻā§āĻ˛āĻŋ āĻā§āĻ¯āĻžāĻĒāĻŋāĻ¸ā§āĻā§āĻ°āĻžāĻ¨ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§, āĻ āĻ¨ā§āĻ¤āĻ¤ āĻŦāĻžāĻā§āĻ¸ā§āĻ° āĻŦāĻžāĻāĻ°ā§ āĻāĻāĻŋ āĻā§āĻĄ āĻāĻĒāĻŋ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻ°āĻŋāĻ˛āĻŋāĻ āĻĄāĻŋāĻ°ā§āĻā§āĻāĻ°āĻŋāĻ¤ā§, āĻ¸āĻĢāĻ˛ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻžāĻ° āĻĒāĻ°ā§ āĻāĻāĻāĻŋ āĻ¸āĻŋāĻŽāĻ˛āĻŋāĻā§āĻ āĻĻāĻŋāĻ¯āĻŧā§ āĻ°āĻŋāĻ˛āĻŋāĻāĻāĻŋ āĻ¸ā§āĻ¯ā§āĻāĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§, āĻļā§āĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻĄāĻŋāĻ°ā§āĻā§āĻāĻ°āĻŋ āĻĨā§āĻā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°āĻā§āĻ˛āĻŋ āĻāĻĒāĻŋ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§, āĻĒā§āĻŽāĻž āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻāĻžāĻ˛ā§ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻāĻ¤ā§āĻ¯āĻžāĻĻāĻŋāĨ¤ āĻāĻ āĻ¸āĻŦ Ansible āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻā§āĻ¨?
āĻĢāĻžāĻāĻ˛ āĻāĻžāĻ āĻžāĻŽā§
Ansible āĻāĻ ā§āĻ° āĻāĻā§
āĻ¸āĻšāĻ āĻĒā§āĻ˛ā§āĻŦā§āĻ
āĻĒā§āĻ˛ā§āĻŦā§āĻ āĻšāĻ˛ āĻāĻāĻāĻŋ yml āĻĢāĻžāĻāĻ˛ āĻ¯āĻž āĻŦāĻŋāĻļā§āĻˇ āĻ¸āĻŋāĻ¨āĻā§āĻ¯āĻžāĻā§āĻ¸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻāĻ°ā§ āĻ¯ā§ Ansible āĻāĻŋ āĻāĻŦāĻ āĻāĻŋāĻāĻžāĻŦā§ āĻāĻ°āĻž āĻāĻāĻŋāĻ¤āĨ¤ āĻāĻ¸ā§āĻ¨ āĻĒā§āĻ°āĻĨāĻŽ āĻĒā§āĻ˛ā§āĻŦā§āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŋ āĻ¯āĻž āĻāĻŋāĻā§āĻ āĻāĻ°ā§ āĻ¨āĻž:
---
- name: Simple playbook
hosts: all
āĻāĻāĻžāĻ¨ā§ āĻāĻŽāĻ°āĻž āĻ¸āĻšāĻāĻāĻžāĻŦā§ āĻŦāĻ˛āĻŋ āĻ¯ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻĒā§āĻ˛ā§āĻŦā§āĻ āĻŦāĻ˛āĻž āĻšāĻ¯āĻŧ Simple Playbook
āĻāĻŦāĻ āĻāĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧāĻŦāĻ¸ā§āĻ¤ā§ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻšā§āĻ¸ā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻāĻ°āĻž āĻāĻāĻŋāĻ¤āĨ¤ āĻāĻŽāĻ°āĻž āĻ¨āĻžāĻŽ āĻ¸āĻš /ansible āĻĄāĻŋāĻ°ā§āĻā§āĻāĻ°āĻŋāĻ¤ā§ āĻāĻāĻŋ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ playbook.yml
āĻāĻŦāĻ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°ā§āĻ¨:
ansible-playbook ./playbook.yml
PLAY [Simple Playbook] ************************************************************************************************************************************
skipping: no hosts matched
āĻāĻ¤ā§āĻ¤āĻ°āĻ¯ā§āĻā§āĻ¯ āĻŦāĻ˛ā§ āĻ¯ā§ āĻāĻāĻŋ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¤āĻžāĻ˛āĻŋāĻāĻžāĻ° āĻ¸āĻžāĻĨā§ āĻŽā§āĻ˛ā§ āĻāĻŽāĻ¨ āĻā§āĻ¨āĻ āĻšā§āĻ¸ā§āĻāĻā§ āĻāĻžāĻ¨ā§ āĻ¨āĻžāĨ¤ āĻ¤āĻžāĻ°āĻž āĻāĻāĻāĻŋ āĻŦāĻŋāĻļā§āĻˇ āĻ¤āĻžāĻ˛āĻŋāĻāĻžāĻā§āĻā§āĻ¤ āĻāĻ°āĻž āĻāĻŦāĻļā§āĻ¯āĻ
āĻāĻ¸ā§āĻ¨ āĻāĻāĻŋ āĻāĻāĻ āĻāĻ¤ā§āĻ¤āĻ°āĻ¯ā§āĻā§āĻ¯ āĻĄāĻŋāĻ°ā§āĻā§āĻāĻ°āĻŋāĻ¤ā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŋ:
123.123.123.123
āĻāĻāĻāĻžāĻŦā§ āĻāĻŽāĻ°āĻž āĻā§āĻŦāĻ˛ āĻšā§āĻ¸ā§āĻ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°āĻŋ (āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻĻāĻ°ā§āĻļāĻāĻžāĻŦā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻŋāĻĒāĻŋāĻāĻ¸ā§āĻ° āĻšā§āĻ¸ā§āĻ, āĻ
āĻĨāĻŦāĻž āĻāĻĒāĻ¨āĻŋ āĻ˛ā§āĻāĻžāĻ˛āĻšā§āĻ¸ā§āĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻ¨ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨) āĻāĻŦāĻ āĻāĻāĻŋāĻā§ āĻ¨āĻžāĻŽā§āĻ° āĻ
āĻ§ā§āĻ¨ā§ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°āĻŋ inventory
.
āĻāĻĒāĻ¨āĻŋ āĻāĻāĻāĻŋ āĻāĻ¨āĻā§āĻāĻ°āĻŋ āĻĢāĻžāĻāĻ˛ āĻĻāĻŋāĻ¯āĻŧā§ āĻāĻ¤ā§āĻ¤āĻ°āĻ¯ā§āĻā§āĻ¯ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨:
ansible-playbook ./playbook.yml -i inventory
PLAY [Simple Playbook] ************************************************************************************************************************************
TASK [Gathering Facts] ************************************************************************************************************************************
PLAY RECAP ************************************************************************************************************************************
āĻāĻĒāĻ¨āĻžāĻ° āĻ¯āĻĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻšā§āĻ¸ā§āĻā§ ssh āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻĨāĻžāĻā§, āĻ¤āĻžāĻšāĻ˛ā§ ansible āĻ¸āĻāĻ¯ā§āĻ āĻāĻ°āĻŦā§ āĻāĻŦāĻ āĻĻā§āĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻ¤āĻĨā§āĻ¯ āĻ¸āĻāĻā§āĻ°āĻš āĻāĻ°āĻŦā§āĨ¤ (āĻĄāĻŋāĻĢāĻ˛ā§āĻ āĻāĻžāĻ¸ā§āĻ [āĻā§āĻ¯āĻžāĻĻāĻžāĻ°āĻŋāĻ āĻĢā§āĻ¯āĻžāĻā§āĻāĻ¸]) āĻāĻ° āĻĒāĻ°ā§ āĻāĻāĻŋ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ā§āĻ° āĻāĻĒāĻ° āĻāĻāĻāĻŋ āĻ¸āĻāĻā§āĻˇāĻŋāĻĒā§āĻ¤ āĻĒā§āĻ°āĻ¤āĻŋāĻŦā§āĻĻāĻ¨ āĻĻā§āĻŦā§ (āĻĒā§āĻ˛ā§ āĻ°āĻŋāĻā§āĻĒ)āĨ¤
āĻĄāĻŋāĻĢāĻ˛ā§āĻāĻ°ā§āĻĒā§, āĻ¸āĻāĻ¯ā§āĻāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻ° āĻ¨āĻžāĻŽ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ¯āĻžāĻ° āĻ āĻ§ā§āĻ¨ā§ āĻāĻĒāĻ¨āĻŋ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§ āĻ˛āĻ āĻāĻ¨ āĻāĻ°ā§āĻā§āĻ¨āĨ¤ āĻāĻāĻŋ āĻ¸āĻŽā§āĻāĻŦāĻ¤ āĻšā§āĻ¸ā§āĻā§ āĻĨāĻžāĻāĻŦā§ āĻ¨āĻžāĨ¤ āĻĒā§āĻ˛ā§āĻŦā§āĻ āĻĢāĻžāĻāĻ˛ā§, āĻāĻĒāĻ¨āĻŋ remote_user āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļāĻŋāĻāĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ¸āĻāĻ¯ā§āĻ āĻāĻ°āĻ¤ā§ āĻā§āĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŦā§āĻ¨ āĻ¤āĻž āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤ āĻāĻāĻžāĻĄāĻŧāĻžāĻ, āĻāĻāĻāĻŋ āĻĻā§āĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻ¤āĻĨā§āĻ¯ āĻĒā§āĻ°āĻžāĻ¯āĻŧāĻļāĻ āĻāĻĒāĻ¨āĻžāĻ° āĻāĻžāĻā§ āĻ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻāĻŦāĻ āĻāĻāĻŋ āĻ¸āĻāĻā§āĻ°āĻš āĻāĻ°āĻ¤ā§ āĻāĻĒāĻ¨āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ¨āĻˇā§āĻ āĻāĻ°āĻž āĻāĻāĻŋāĻ¤ āĻ¨āĻ¯āĻŧāĨ¤ āĻāĻ āĻāĻžāĻāĻāĻŋāĻ āĻ āĻā§āĻˇāĻŽ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§:
---
- name: Simple playbook
hosts: all
remote_user: root
become: true
gather_facts: no
āĻĒā§āĻ˛ā§āĻŦā§āĻāĻāĻŋ āĻāĻŦāĻžāĻ° āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻ¨āĻŋāĻļā§āĻāĻŋāĻ¤ āĻāĻ°ā§āĻ¨ āĻ¯ā§ āĻ¸āĻāĻ¯ā§āĻāĻāĻŋ āĻāĻžāĻ āĻāĻ°āĻā§āĨ¤ (āĻ¯āĻĻāĻŋ āĻāĻĒāĻ¨āĻŋ āĻ°ā§āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°ā§āĻ¨, āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻ¨ā§āĻ¨āĻ¤ āĻ
āĻ§āĻŋāĻāĻžāĻ° āĻĒāĻžāĻāĻ¯āĻŧāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻĒāĻ¨āĻžāĻā§ become: true āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļāĻ¨āĻžāĻ āĻāĻ˛ā§āĻ˛ā§āĻ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻĄāĻā§āĻŽā§āĻ¨ā§āĻā§āĻļāĻ¨ā§ āĻ˛ā§āĻāĻž āĻāĻā§: become set to âtrueâ/âyesâ to activate privilege escalation.
āĻ¯āĻĻāĻŋāĻ āĻāĻāĻŋ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖāĻ°ā§āĻĒā§ āĻĒāĻ°āĻŋāĻˇā§āĻāĻžāĻ° āĻ¨āĻ¯āĻŧ āĻā§āĻ¨)āĨ¤
āĻ¸āĻŽā§āĻāĻŦāĻ¤ āĻāĻĒāĻ¨āĻŋ āĻāĻāĻāĻŋ āĻ¤ā§āĻ°ā§āĻāĻŋ āĻĒāĻžāĻŦā§āĻ¨ āĻāĻ āĻāĻžāĻ°āĻŖā§ āĻ¯ā§ ansible āĻĒāĻžāĻāĻĨāĻ¨ āĻĻā§āĻāĻžāĻˇā§ āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻ¨āĻž, āĻ¤āĻžāĻ°āĻĒāĻ° āĻāĻĒāĻ¨āĻŋ āĻāĻāĻŋ āĻ¨āĻŋāĻā§ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨:
ansible_python_interpreter: /usr/bin/python3
āĻāĻĒāĻ¨āĻŋ āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻĻāĻŋāĻ¯āĻŧā§ āĻā§āĻāĻā§ āĻĒā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ āĻ¯ā§āĻāĻžāĻ¨ā§ āĻāĻĒāĻ¨āĻžāĻ° āĻāĻžāĻā§ āĻĒāĻžāĻāĻĨāĻ¨ āĻāĻā§ whereis python
.
āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻĒā§āĻ¯āĻžāĻā§āĻ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻž āĻšāĻā§āĻā§
Ansible āĻāĻ° āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āĻĄāĻŋāĻ¸ā§āĻā§āĻ°āĻŋāĻŦāĻŋāĻāĻļāĻ¨ā§ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻĒā§āĻ¯āĻžāĻā§āĻā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ
āĻ¨ā§āĻ āĻŽāĻĄāĻŋāĻāĻ˛ āĻ°āĻ¯āĻŧā§āĻā§, āĻ¤āĻžāĻ āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻ¨ā§ āĻāĻžāĻ°āĻŖā§ āĻŦā§āĻ¯āĻžāĻļ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻ˛āĻŋāĻāĻ¤ā§ āĻšāĻŦā§ āĻ¨āĻžāĨ¤ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻāĻĒāĻĄā§āĻ āĻāĻ°āĻ¤ā§ āĻāĻŦāĻ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻĒā§āĻ¯āĻžāĻā§āĻ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻ¨ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻ āĻŽāĻĄāĻŋāĻāĻ˛āĻā§āĻ˛āĻŋāĻ° āĻāĻāĻāĻŋāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨āĨ¤ āĻāĻŽāĻžāĻ° āĻāĻŋāĻĒāĻŋāĻāĻ¸ā§ āĻāĻŦā§āĻ¨ā§āĻā§ āĻ˛āĻŋāĻ¨āĻžāĻā§āĻ¸ āĻ°āĻ¯āĻŧā§āĻā§, āĻ¤āĻžāĻ āĻāĻŽāĻŋ āĻ¯ā§ āĻĒā§āĻ¯āĻžāĻā§āĻāĻā§āĻ˛āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŋ āĻ¤āĻž āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻ¤ā§ apt-get
и
āĻāĻ¸ā§āĻ¨ āĻĒā§āĻ°āĻĨāĻŽ āĻāĻžāĻāĻā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻĒā§āĻ˛ā§āĻŦā§āĻā§āĻ° āĻĒāĻ°āĻŋāĻĒā§āĻ°āĻ āĻāĻ°āĻŋ:
---
- name: Simple playbook
hosts: all
remote_user: root
become: true
gather_facts: no
tasks:
- name: Update system
apt: update_cache=yes
- name: Install system dependencies
apt:
name: git,nginx,redis,postgresql,postgresql-contrib
state: present
āĻāĻžāĻ¸ā§āĻ āĻšāĻ˛ āĻ āĻŋāĻ āĻ¸ā§āĻ āĻāĻžāĻ¸ā§āĻ āĻ¯āĻž Ansible āĻ°āĻŋāĻŽā§āĻ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ āĻāĻ°āĻŦā§āĨ¤ āĻāĻŽāĻ°āĻž āĻāĻžāĻ¸ā§āĻāĻāĻŋāĻā§ āĻāĻāĻāĻŋ āĻ¨āĻžāĻŽ āĻĻāĻŋāĻ āĻ¯āĻžāĻ¤ā§ āĻāĻŽāĻ°āĻž āĻ˛āĻā§ āĻāĻ° āĻāĻā§āĻ¸āĻŋāĻāĻŋāĻāĻļāĻ¨ āĻā§āĻ°ā§āĻ¯āĻžāĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋāĨ¤ āĻāĻŦāĻ āĻāĻŽāĻ°āĻž āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻāĻ°āĻŋ, āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻŽāĻĄāĻŋāĻāĻ˛ā§āĻ° āĻ¸āĻŋāĻ¨āĻā§āĻ¯āĻžāĻā§āĻ¸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§, āĻāĻāĻŋ āĻā§ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻāĻā§āĻˇā§āĻ¤ā§āĻ°ā§ apt: update_cache=yes
- apt āĻŽāĻĄāĻŋāĻāĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻĒā§āĻ¯āĻžāĻā§āĻ āĻāĻĒāĻĄā§āĻ āĻāĻ°āĻ¤ā§ āĻŦāĻ˛ā§āĨ¤ āĻĻā§āĻŦāĻŋāĻ¤ā§āĻ¯āĻŧ āĻāĻŽāĻžāĻ¨ā§āĻĄāĻāĻŋ āĻāĻāĻā§ āĻŦā§āĻļāĻŋ āĻāĻāĻŋāĻ˛āĨ¤ āĻāĻŽāĻ°āĻž apt āĻŽāĻĄāĻŋāĻāĻ˛ā§ āĻĒā§āĻ¯āĻžāĻā§āĻāĻā§āĻ˛āĻŋāĻ° āĻāĻāĻāĻŋ āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻĒāĻžāĻ¸ āĻāĻ°āĻŋ āĻāĻŦāĻ āĻŦāĻ˛āĻŋ āĻ¯ā§ āĻ¸ā§āĻā§āĻ˛āĻŋ state
āĻšāĻāĻ¯āĻŧāĻž āĻāĻāĻŋāĻ¤ present
, āĻ
āĻ°ā§āĻĨāĻžā§, āĻāĻŽāĻ°āĻž āĻŦāĻ˛āĻŋ āĻāĻ āĻĒā§āĻ¯āĻžāĻā§āĻāĻā§āĻ˛āĻŋ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°ā§āĻ¨āĨ¤ āĻāĻāĻāĻāĻžāĻŦā§, āĻāĻŽāĻ°āĻž āĻ¤āĻžāĻĻā§āĻ° āĻŽā§āĻā§ āĻĻāĻŋāĻ¤ā§ āĻŦāĻ˛āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ, āĻ
āĻĨāĻŦāĻž āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°ā§ āĻāĻĒāĻĄā§āĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ state
. āĻ
āĻ¨ā§āĻā§āĻ°āĻš āĻāĻ°ā§ āĻŽāĻ¨ā§ āĻ°āĻžāĻāĻŦā§āĻ¨ āĻ¯ā§ āĻ°ā§āĻ˛ā§āĻ° āĻāĻ¨ā§āĻ¯ postgresql-āĻāĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻžāĻĻā§āĻ° postgresql-contrib āĻĒā§āĻ¯āĻžāĻā§āĻ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨, āĻ¯āĻž āĻāĻŽāĻ°āĻž āĻāĻāĻ¨ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻāĻŋāĨ¤ āĻāĻŦāĻžāĻ°, āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻžāĻ¨āĻ¤ā§ āĻšāĻŦā§ āĻāĻŦāĻ āĻāĻāĻŋ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§; āĻ¨āĻŋāĻā§āĻ° āĻĨā§āĻā§ āĻĻāĻžāĻ¯āĻŧāĻŦāĻĻā§āĻ§ āĻāĻāĻŋ āĻāĻ°āĻŦā§ āĻ¨āĻžāĨ¤
āĻĒā§āĻ˛ā§āĻŦā§āĻāĻāĻŋ āĻāĻŦāĻžāĻ° āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻĒā§āĻ¯āĻžāĻā§āĻāĻā§āĻ˛āĻŋ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻž āĻāĻā§ āĻāĻŋāĻ¨āĻž āĻ¤āĻž āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°ā§āĻ¨āĨ¤
āĻ¨āĻ¤ā§āĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻā§āĻā§āĨ¤
āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻĻā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, Ansible āĻāĻ° āĻāĻāĻāĻŋ āĻŽāĻĄāĻŋāĻāĻ˛ āĻ°āĻ¯āĻŧā§āĻā§ - āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĨ¤ āĻāĻ¸ā§āĻ¨ āĻāĻ°āĻ āĻāĻāĻāĻŋ āĻāĻžāĻ āĻ¯ā§āĻ āĻāĻ°āĻŋ (āĻāĻŽāĻŋ āĻĒā§āĻ˛ā§āĻŦā§āĻā§āĻ° āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§ āĻĒāĻ°āĻŋāĻāĻŋāĻ¤ āĻ āĻāĻļāĻā§āĻ˛āĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ā§āĻ° āĻĒāĻŋāĻāĻ¨ā§ āĻ˛ā§āĻāĻŋāĻ¯āĻŧā§ āĻ°ā§āĻā§āĻāĻŋāĻ˛āĻžāĻŽ āĻ¯āĻžāĻ¤ā§ āĻĒā§āĻ°āĻ¤āĻŋāĻŦāĻžāĻ° āĻāĻāĻŋ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖāĻ°ā§āĻĒā§ āĻ āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻ¨āĻž āĻšāĻ¯āĻŧ):
---
- name: Simple playbook
# ...
tasks:
# ...
- name: Add a new user
user:
name: my_user
shell: /bin/bash
password: "{{ 123qweasd | password_hash('sha512') }}"
āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŋ, āĻāĻāĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ¸ā§āĻā§āĻ˛ āĻāĻŦāĻ āĻĒāĻžāĻ¸āĻāĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻ¸ā§āĻ āĻāĻ°āĻŋāĨ¤ āĻāĻŦāĻ āĻ¤āĻžāĻ°āĻĒāĻ°ā§ āĻāĻŽāĻ°āĻž āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ¯āĻŧ āĻĒāĻĄāĻŧāĻŋāĨ¤ āĻ¯āĻĻāĻŋ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻšā§āĻ¸ā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻ° āĻ¨āĻžāĻŽ āĻāĻŋāĻ¨ā§āĻ¨ āĻšāĻ¤ā§ āĻšāĻ¯āĻŧ? āĻāĻŦāĻ āĻĒā§āĻ˛ā§āĻŦā§āĻā§ āĻ¸ā§āĻĒāĻˇā§āĻ āĻĒāĻžāĻ ā§āĻ¯ā§ āĻĒāĻžāĻ¸āĻāĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°āĻž āĻāĻāĻāĻŋ āĻā§āĻŦ āĻāĻžāĻ°āĻžāĻĒ āĻ§āĻžāĻ°āĻŖāĻžāĨ¤ āĻļā§āĻ°ā§āĻ¤ā§, āĻāĻ˛ā§āĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻ° āĻ¨āĻžāĻŽ āĻāĻŦāĻ āĻĒāĻžāĻ¸āĻāĻ¯āĻŧāĻžāĻ°ā§āĻĄāĻāĻŋ āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛ā§ āĻ°āĻžāĻāĻŋ āĻāĻŦāĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§āĻ° āĻļā§āĻˇā§ āĻāĻŽāĻŋ āĻĻā§āĻāĻžāĻŦ āĻāĻŋāĻāĻžāĻŦā§ āĻĒāĻžāĻ¸āĻāĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻāĻ¨āĻā§āĻ°āĻŋāĻĒā§āĻ āĻāĻ°āĻž āĻ¯āĻžāĻ¯āĻŧāĨ¤
---
- name: Simple playbook
# ...
tasks:
# ...
- name: Add a new user
user:
name: "{{ user }}"
shell: /bin/bash
password: "{{ user_password | password_hash('sha512') }}"
āĻĄāĻŦāĻ˛ āĻā§āĻāĻāĻĄāĻŧāĻž āĻ§āĻ¨ā§āĻ°ā§āĻŦāĻ¨ā§āĻ§āĻ¨ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻĒā§āĻ˛ā§āĻŦā§āĻā§ āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛ āĻ¸ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤
āĻāĻŽāĻ°āĻž āĻāĻ¨āĻā§āĻ¨ā§āĻāĻ°āĻŋ āĻĢāĻžāĻāĻ˛ā§ āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛ā§āĻ° āĻŽāĻžāĻ¨ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļ āĻāĻ°āĻŦ:
123.123.123.123
[all:vars]
user=my_user
user_password=123qweasd
āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļāĻŋāĻāĻž āĻ¨ā§āĻ āĻāĻ°ā§āĻ¨ [all:vars]
- āĻāĻāĻŋ āĻŦāĻ˛ā§ āĻ¯ā§ āĻĒāĻžāĻ ā§āĻ¯ā§āĻ° āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻŦā§āĻ˛āĻāĻāĻŋ āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛ (āĻāĻžāĻ°ā§āĻ¸) āĻāĻŦāĻ āĻ¸ā§āĻā§āĻ˛āĻŋ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻšā§āĻ¸ā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¯ā§āĻā§āĻ¯ (āĻ¸āĻāĻ˛)āĨ¤
āĻ¨āĻāĻļāĻžāĻāĻŋāĻ āĻāĻāĻ°ā§āĻˇāĻŖā§āĻ¯āĻŧ "{{ user_password | password_hash('sha512') }}"
. āĻāĻŋāĻ¨āĻŋāĻ¸āĻāĻŋ āĻšāĻ˛ āĻ¯ā§ ansible āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻā§ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°ā§ āĻ¨āĻž user_add
āĻ¯ā§āĻŽāĻ¨ āĻāĻĒāĻ¨āĻŋ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛āĻŋ āĻāĻ°āĻŦā§āĻ¨āĨ¤ āĻāĻŦāĻ āĻāĻāĻŋ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĄā§āĻāĻž āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°ā§, āĻ¯ā§ āĻāĻžāĻ°āĻŖā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻ
āĻŦāĻļā§āĻ¯āĻ āĻĒāĻžāĻ¸āĻāĻ¯āĻŧāĻžāĻ°ā§āĻĄāĻāĻŋāĻā§ āĻāĻā§ āĻĨā§āĻā§āĻ āĻšā§āĻ¯āĻžāĻļā§ āĻ°ā§āĻĒāĻžāĻ¨ā§āĻ¤āĻ° āĻāĻ°āĻ¤ā§ āĻšāĻŦā§, āĻ¯āĻž āĻāĻ āĻāĻŽāĻžāĻ¨ā§āĻĄāĻāĻŋ āĻāĻ°ā§āĨ¤
āĻāĻ¸ā§āĻ¨ āĻāĻŽāĻžāĻĻā§āĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻā§ sudo āĻā§āĻ°ā§āĻĒā§ āĻ¯ā§āĻā§āĻ¤ āĻāĻ°āĻŋāĨ¤ āĻ¯āĻžāĻāĻšā§āĻ, āĻāĻ° āĻāĻā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¨āĻŋāĻļā§āĻāĻŋāĻ¤ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻ¯ā§ āĻāĻ āĻ§āĻ°āĻ¨ā§āĻ° āĻāĻāĻāĻŋ āĻā§āĻˇā§āĻ ā§ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ āĻāĻžāĻ°āĻŖ āĻā§āĻ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻŋ āĻāĻ°āĻŦā§ āĻ¨āĻž:
---
- name: Simple playbook
# ...
tasks:
# ...
- name: Ensure a 'sudo' group
group:
name: sudo
state: present
- name: Add a new user
user:
name: "{{ user }}"
shell: /bin/bash
password: "{{ user_password | password_hash('sha512') }}"
groups: "sudo"
āĻ¸āĻŦāĻāĻŋāĻā§āĻ āĻŦā§āĻļ āĻ¸āĻšāĻ, āĻā§āĻ°ā§āĻĒ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻāĻāĻŋ āĻā§āĻ°ā§āĻĒ āĻŽāĻĄāĻŋāĻāĻ˛āĻ āĻ°āĻ¯āĻŧā§āĻā§, āĻāĻāĻāĻŋ āĻ¸āĻŋāĻ¨āĻā§āĻ¯āĻžāĻā§āĻ¸ āĻ¸āĻš apt-āĻāĻ° āĻŽāĻ¤ā§āĨ¤ āĻ¤āĻžāĻ°āĻĒāĻ°ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻ° āĻāĻžāĻā§ āĻāĻ āĻā§āĻ°ā§āĻĒāĻāĻŋ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻ¨ āĻāĻ°āĻž āĻ¯āĻĨā§āĻˇā§āĻ (groups: "sudo"
).
āĻāĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻāĻāĻŋ ssh āĻā§ āĻ¯ā§āĻ āĻāĻ°āĻžāĻ āĻĻāĻ°āĻāĻžāĻ°ā§ āĻ¯āĻžāĻ¤ā§ āĻāĻŽāĻ°āĻž āĻāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻĒāĻžāĻ¸āĻāĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻāĻžāĻĄāĻŧāĻžāĻ āĻ˛āĻ āĻāĻ¨ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ:
---
- name: Simple playbook
# ...
tasks:
# ...
- name: Ensure a 'sudo' group
group:
name: sudo
state: present
- name: Add a new user
user:
name: "{{ user }}"
shell: /bin/bash
password: "{{ user_password | password_hash('sha512') }}"
groups: "sudo"
- name: Deploy SSH Key
authorized_key:
user: "{{ user }}"
key: "{{ lookup('file', '~/.ssh/id_rsa.pub') }}"
state: present
āĻāĻ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, āĻ¨āĻāĻļāĻž āĻāĻāĻ°ā§āĻˇāĻŖā§āĻ¯āĻŧ "{{ lookup('file', '~/.ssh/id_rsa.pub') }}"
â āĻāĻāĻŋ id_rsa.pub āĻĢāĻžāĻāĻ˛ā§āĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧāĻŦāĻ¸ā§āĻ¤ā§ āĻ
āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻāĻ°ā§ (āĻāĻĒāĻ¨āĻžāĻ° āĻ¨āĻžāĻŽ āĻāĻ˛āĻžāĻĻāĻž āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§), āĻ
āĻ°ā§āĻĨāĻžā§, ssh āĻā§-āĻāĻ° āĻ¸āĻ°ā§āĻŦāĻāĻ¨ā§āĻ¨ āĻ
āĻāĻļ āĻāĻŦāĻ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ
āĻ¨ā§āĻŽā§āĻĻāĻŋāĻ¤ āĻā§āĻā§āĻ˛āĻŋāĻ° āĻ¤āĻžāĻ˛āĻŋāĻāĻžāĻ¯āĻŧ āĻāĻĒāĻ˛ā§āĻĄ āĻāĻ°ā§āĨ¤
āĻā§āĻŽāĻŋāĻāĻž
āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ¤ā§āĻ°āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻ¤āĻŋāĻ¨āĻāĻŋ āĻāĻžāĻāĻ āĻ¸āĻšāĻā§āĻ āĻāĻāĻāĻŋ āĻāĻžāĻā§āĻ° āĻāĻāĻāĻŋ āĻā§āĻ°ā§āĻĒā§ āĻļā§āĻ°ā§āĻŖā§āĻŦāĻĻā§āĻ§ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§, āĻāĻŦāĻ āĻāĻ āĻā§āĻ°ā§āĻĒāĻāĻŋāĻā§ āĻŽā§āĻ˛ āĻĒā§āĻ˛ā§āĻŦā§āĻ āĻĨā§āĻā§ āĻāĻ˛āĻžāĻĻāĻžāĻāĻžāĻŦā§ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°āĻž āĻāĻžāĻ˛ āĻ§āĻžāĻ°āĻŖāĻž āĻšāĻŦā§ āĻ¯āĻžāĻ¤ā§ āĻāĻāĻŋ āĻā§āĻŦ āĻŦāĻĄāĻŧ āĻ¨āĻž āĻšāĻ¯āĻŧāĨ¤ āĻāĻ āĻāĻĻā§āĻĻā§āĻļā§āĻ¯ā§, Ansible āĻāĻā§
āĻāĻā§āĻŦāĻžāĻ°ā§ āĻļā§āĻ°ā§āĻ¤ā§ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļāĻŋāĻ¤ āĻĢāĻžāĻāĻ˛ā§āĻ° āĻāĻžāĻ āĻžāĻŽā§ āĻ
āĻ¨ā§āĻ¸āĻžāĻ°ā§, āĻā§āĻŽāĻŋāĻāĻžāĻā§āĻ˛āĻŋ āĻ
āĻŦāĻļā§āĻ¯āĻ āĻāĻāĻāĻŋ āĻĒā§āĻĨāĻ āĻā§āĻŽāĻŋāĻāĻž āĻĄāĻŋāĻ°ā§āĻā§āĻāĻ°āĻŋāĻ¤ā§ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§, āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻā§āĻŽāĻŋāĻāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻ āĻ¨āĻžāĻŽā§āĻ° āĻāĻāĻāĻŋ āĻĒā§āĻĨāĻ āĻĄāĻŋāĻ°ā§āĻā§āĻāĻ°āĻŋ āĻ°āĻ¯āĻŧā§āĻā§, āĻāĻžāĻ, āĻĢāĻžāĻāĻ˛, āĻā§āĻŽāĻĒā§āĻ˛ā§āĻ āĻāĻ¤ā§āĻ¯āĻžāĻĻāĻŋ āĻĄāĻŋāĻ°ā§āĻā§āĻāĻ°āĻŋāĻ° āĻāĻŋāĻ¤āĻ°ā§āĨ¤
āĻāĻ¸ā§āĻ¨ āĻāĻāĻāĻŋ āĻĢāĻžāĻāĻ˛ āĻāĻžāĻ āĻžāĻŽā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŋ: ./ansible/roles/user/tasks/main.yml
(āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻšāĻ˛ āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻĢāĻžāĻāĻ˛ āĻ¯āĻž āĻĒā§āĻ˛ā§āĻŦā§āĻā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻāĻāĻŋ āĻā§āĻŽāĻŋāĻāĻž āĻ¸āĻāĻ¯ā§āĻā§āĻ¤ āĻšāĻ˛ā§ āĻ˛ā§āĻĄ āĻāĻŦāĻ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻāĻ°āĻž āĻšāĻŦā§; āĻ
āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻā§āĻŽāĻŋāĻāĻž āĻĢāĻžāĻāĻ˛ āĻāĻāĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻāĻ¯ā§āĻā§āĻ¤ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§)āĨ¤ āĻāĻāĻ¨ āĻāĻĒāĻ¨āĻŋ āĻāĻ āĻĢāĻžāĻāĻ˛āĻāĻŋāĻ¤ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻāĻŋāĻ¤ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻāĻžāĻ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨:
# Create user and add him to groups
- name: Ensure a 'sudo' group
group:
name: sudo
state: present
- name: Add a new user
user:
name: "{{ user }}"
shell: /bin/bash
password: "{{ user_password | password_hash('sha512') }}"
groups: "sudo"
- name: Deploy SSH Key
authorized_key:
user: "{{ user }}"
key: "{{ lookup('file', '~/.ssh/id_rsa.pub') }}"
state: present
āĻŽā§āĻ˛ āĻĒā§āĻ˛ā§āĻŦā§āĻā§, āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻ° āĻā§āĻŽāĻŋāĻāĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻĒāĻ¨āĻžāĻā§ āĻ āĻŦāĻļā§āĻ¯āĻ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§:
---
- name: Simple playbook
hosts: all
remote_user: root
gather_facts: no
tasks:
- name: Update system
apt: update_cache=yes
- name: Install system dependencies
apt:
name: git,nginx,redis,postgresql,postgresql-contrib
state: present
roles:
- user
āĻāĻāĻžāĻĄāĻŧāĻžāĻ, āĻ
āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻāĻžāĻā§āĻ° āĻāĻā§ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻāĻĒāĻĄā§āĻ āĻāĻ°āĻžāĻ° āĻ
āĻ°ā§āĻĨ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§; āĻāĻāĻŋ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻĒāĻ¨āĻŋ āĻŦā§āĻ˛āĻā§āĻ° āĻ¨āĻžāĻŽ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ tasks
āĻ¯ā§āĻāĻžāĻ¨ā§ āĻ¤āĻžāĻ°āĻž āĻ¸āĻāĻā§āĻāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ pre_tasks
.
nginx āĻ¸ā§āĻ āĻāĻĒ āĻāĻ°āĻž āĻšāĻā§āĻā§
āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§āĻ Nginx āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻž āĻāĻāĻŋāĻ¤; āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻāĻŋ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻāĻŦāĻ āĻāĻāĻŋ āĻāĻžāĻ˛āĻžāĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻā§āĻŽāĻŋāĻāĻžāĻ¯āĻŧ āĻāĻā§āĻ¨āĻŋ āĻāĻ°āĻŋāĨ¤ āĻāĻ¸ā§āĻ¨ āĻāĻāĻāĻŋ āĻĢāĻžāĻāĻ˛ āĻāĻžāĻ āĻžāĻŽā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŋ:
- ansible
- roles
- nginx
- files
- tasks
- main.yml
- templates
āĻāĻāĻ¨ āĻāĻŽāĻžāĻĻā§āĻ° āĻĢāĻžāĻāĻ˛ āĻāĻŦāĻ āĻā§āĻŽāĻĒā§āĻ˛ā§āĻ āĻĻāĻ°āĻāĻžāĻ°āĨ¤ āĻ¤āĻžāĻĻā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻĒāĻžāĻ°ā§āĻĨāĻā§āĻ¯ āĻšāĻ˛ āĻ¯ā§ āĻāĻ¨āĻ¸āĻŋāĻŦāĻ˛ āĻĢāĻžāĻāĻ˛āĻā§āĻ˛āĻŋāĻā§ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻ āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻāĻ°ā§, āĻ¯ā§āĻŽāĻ¨āĻāĻŋāĨ¤ āĻāĻŦāĻ āĻā§āĻŽāĻĒā§āĻ˛ā§āĻāĻā§āĻ˛āĻŋāĻ¤ā§ āĻ āĻŦāĻļā§āĻ¯āĻ j2 āĻāĻā§āĻ¸āĻā§āĻ¨āĻļāĻ¨ āĻĨāĻžāĻāĻ¤ā§ āĻšāĻŦā§ āĻāĻŦāĻ āĻ¤āĻžāĻ°āĻž āĻāĻāĻ āĻĄāĻŦāĻ˛ āĻā§āĻāĻāĻĄāĻŧāĻž āĻ§āĻ¨ā§āĻ°ā§āĻŦāĻ¨ā§āĻ§āĻ¨ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻļā§āĻ˛ āĻŽāĻžāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
āĻāĻ° nginx āĻ¸āĻā§āĻ°āĻŋāĻ¯āĻŧ āĻāĻ°āĻž āĻ¯āĻžāĻ main.yml
āĻĢāĻžāĻāĻ˛ āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻāĻāĻŋ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽāĻĄ āĻŽāĻĄāĻŋāĻāĻ˛ āĻ°āĻ¯āĻŧā§āĻā§:
# Copy nginx configs and start it
- name: enable service nginx and start
systemd:
name: nginx
state: started
enabled: yes
āĻāĻāĻžāĻ¨ā§ āĻāĻŽāĻ°āĻž āĻļā§āĻ§ā§ āĻŦāĻ˛āĻŋ āĻ¨āĻž āĻ¯ā§ nginx āĻļā§āĻ°ā§ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ (āĻ
āĻ°ā§āĻĨāĻžā§, āĻāĻŽāĻ°āĻž āĻāĻāĻŋ āĻāĻžāĻ˛ā§ āĻāĻ°āĻŋ), āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻŽāĻ°āĻž āĻ
āĻŦāĻŋāĻ˛āĻŽā§āĻŦā§ āĻŦāĻ˛āĻŋ āĻ¯ā§ āĻāĻāĻŋ āĻ
āĻŦāĻļā§āĻ¯āĻ āĻ¸āĻā§āĻ°āĻŋāĻ¯āĻŧ āĻāĻ°āĻž āĻāĻāĻŋāĻ¤āĨ¤
āĻāĻāĻ¨ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĢāĻžāĻāĻ˛ āĻāĻĒāĻŋ āĻāĻ°āĻž āĻ¯āĻžāĻ:
# Copy nginx configs and start it
- name: enable service nginx and start
systemd:
name: nginx
state: started
enabled: yes
- name: Copy the nginx.conf
copy:
src: nginx.conf
dest: /etc/nginx/nginx.conf
owner: root
group: root
mode: '0644'
backup: yes
- name: Copy template my_app.conf
template:
src: my_app_conf.j2
dest: /etc/nginx/sites-available/my_app.conf
owner: root
group: root
mode: '0644'
āĻāĻŽāĻ°āĻž āĻĒā§āĻ°āĻ§āĻžāĻ¨ nginx āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĢāĻžāĻāĻ˛ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŋ (āĻāĻĒāĻ¨āĻŋ āĻāĻāĻŋ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻĨā§āĻā§ āĻ¨āĻŋāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨, āĻ
āĻĨāĻŦāĻž āĻ¨āĻŋāĻā§ āĻ˛āĻŋāĻāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨)āĨ¤ āĻāĻŦāĻ āĻ¸āĻžāĻāĻ_āĻāĻĒāĻ˛āĻā§āĻ¯ āĻĄāĻŋāĻ°ā§āĻā§āĻāĻ°āĻŋāĻ¤ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĢāĻžāĻāĻ˛ (āĻāĻāĻŋ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻ¨āĻ¯āĻŧ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻĻāĻ°āĻāĻžāĻ°ā§)āĨ¤ āĻĒā§āĻ°āĻĨāĻŽ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, āĻāĻŽāĻ°āĻž āĻĢāĻžāĻāĻ˛āĻā§āĻ˛āĻŋ āĻ
āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻāĻ°āĻ¤ā§ āĻ
āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻŽāĻĄāĻŋāĻāĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŋ (āĻĢāĻžāĻāĻ˛āĻāĻŋ āĻ
āĻŦāĻļā§āĻ¯āĻ āĻĨāĻžāĻāĻ¤ā§ āĻšāĻŦā§ /ansible/roles/nginx/files/nginx.conf
) āĻĻā§āĻŦāĻŋāĻ¤ā§āĻ¯āĻŧāĻāĻŋāĻ¤ā§, āĻāĻŽāĻ°āĻž āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛ā§āĻ° āĻŽāĻžāĻ¨āĻā§āĻ˛āĻŋ āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°ā§ āĻā§āĻŽāĻĒā§āĻ˛ā§āĻāĻāĻŋ āĻ
āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻāĻ°āĻŋāĨ¤ āĻā§āĻŽāĻĒā§āĻ˛ā§āĻāĻāĻŋ āĻĨāĻžāĻāĻž āĻāĻāĻŋāĻ¤ /ansible/roles/nginx/templates/my_app.j2
) āĻāĻŦāĻ āĻāĻāĻŋ āĻāĻ āĻŽāĻ¤ āĻāĻŋāĻā§ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻ°ā§:
upstream {{ app_name }} {
server unix:{{ app_path }}/shared/tmp/sockets/puma.sock;
}
server {
listen 80;
server_name {{ server_name }} {{ inventory_hostname }};
root {{ app_path }}/current/public;
try_files $uri/index.html $uri.html $uri @{{ app_name }};
....
}
āĻ¸āĻ¨ā§āĻ¨āĻŋāĻŦā§āĻļ āĻŽāĻ¨ā§āĻ¯ā§āĻ āĻĻāĻŋāĻ¨ {{ app_name }}
, {{ app_path }}
, {{ server_name }}
, {{ inventory_hostname }}
â āĻāĻ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛ āĻ¯āĻžāĻ° āĻŽāĻžāĻ¨ Ansible āĻāĻĒāĻŋ āĻāĻ°āĻžāĻ° āĻāĻā§ āĻā§āĻŽāĻĒā§āĻ˛ā§āĻā§ āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻŋāĻ¤ āĻšāĻŦā§āĨ¤ āĻāĻĒāĻ¨āĻŋ āĻšā§āĻ¸ā§āĻā§āĻ° āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻā§āĻ°ā§āĻĒā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻĒā§āĻ˛ā§āĻŦā§āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ˛ā§ āĻāĻāĻŋ āĻāĻžāĻ°ā§āĻ¯āĻāĻ°āĨ¤ āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻāĻŽāĻ°āĻž āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻ¨āĻā§āĻ¨ā§āĻāĻ°āĻŋ āĻĢāĻžāĻāĻ˛ āĻ¯ā§āĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ:
[production]
123.123.123.123
[staging]
231.231.231.231
[all:vars]
user=my_user
user_password=123qweasd
[production:vars]
server_name=production
app_path=/home/www/my_app
app_name=my_app
[staging:vars]
server_name=staging
app_path=/home/www/my_stage
app_name=my_stage_app
āĻ¯āĻĻāĻŋ āĻāĻŽāĻ°āĻž āĻāĻāĻ¨ āĻāĻŽāĻžāĻĻā§āĻ° āĻĒā§āĻ˛ā§āĻŦā§āĻ āĻāĻžāĻ˛ā§ āĻāĻ°āĻŋ, āĻāĻāĻŋ āĻāĻāĻ¯āĻŧ āĻšā§āĻ¸ā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻžāĻ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ āĻāĻ°āĻŦā§āĨ¤ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻāĻ āĻ¸āĻŽāĻ¯āĻŧā§, āĻāĻāĻāĻŋ āĻ¸ā§āĻā§āĻāĻŋāĻ āĻšā§āĻ¸ā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯, āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛āĻā§āĻ˛āĻŋ āĻĒā§āĻ°ā§āĻĄāĻžāĻāĻļāĻ¨ā§āĻ° āĻĨā§āĻā§ āĻāĻ˛āĻžāĻĻāĻž āĻšāĻŦā§, āĻāĻŦāĻ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻā§āĻŽāĻŋāĻāĻž āĻāĻŦāĻ āĻĒā§āĻ˛ā§āĻŦā§āĻāĻā§āĻ˛āĻŋāĻ¤ā§ āĻ¨āĻ¯āĻŧ, nginx āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§āĻāĨ¤ {{ inventory_hostname }}
āĻāĻ¨āĻā§āĻ¨ā§āĻāĻ°āĻŋ āĻĢāĻžāĻāĻ˛ā§ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°āĻžāĻ° āĻĻāĻ°āĻāĻžāĻ° āĻ¨ā§āĻ - āĻāĻāĻŋ
āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻŦā§āĻļ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻšā§āĻ¸ā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻāĻ¨āĻā§āĻ¨ā§āĻāĻ°āĻŋ āĻĢāĻžāĻāĻ˛ āĻ°āĻžāĻāĻ¤ā§ āĻāĻžāĻ¨ āĻ¤āĻŦā§ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻāĻāĻŋ āĻā§āĻ°ā§āĻĒā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻžāĻ˛āĻžāĻ¤ā§ āĻāĻžāĻ¨ āĻ¤āĻŦā§ āĻāĻāĻŋ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻāĻŽāĻžāĻ¨ā§āĻĄā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§:
ansible-playbook -i inventory ./playbook.yml -l "staging"
āĻāĻ°ā§āĻāĻāĻŋ āĻŦāĻŋāĻāĻ˛ā§āĻĒ āĻšāĻ˛ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻā§āĻ°ā§āĻĒā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ˛āĻžāĻĻāĻž āĻāĻ¨āĻā§āĻ¨ā§āĻāĻ°āĻŋ āĻĢāĻžāĻāĻ˛ āĻĨāĻžāĻāĻžāĨ¤ āĻ āĻĨāĻŦāĻž āĻāĻĒāĻ¨āĻžāĻ° āĻ¯āĻĻāĻŋ āĻ āĻ¨ā§āĻāĻā§āĻ˛āĻŋ āĻāĻŋāĻ¨ā§āĻ¨ āĻšā§āĻ¸ā§āĻ āĻĨāĻžāĻā§ āĻ¤āĻŦā§ āĻāĻĒāĻ¨āĻŋ āĻĻā§āĻāĻŋ āĻĒāĻ¨ā§āĻĨāĻž āĻāĻāĻ¤ā§āĻ°āĻŋāĻ¤ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤
āĻāĻ¸ā§āĻ¨ nginx āĻ¸ā§āĻ āĻāĻĒ āĻāĻ°āĻ¤ā§ āĻĢāĻŋāĻ°ā§ āĻ¯āĻžāĻāĨ¤ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĢāĻžāĻāĻ˛ āĻāĻĒāĻŋ āĻāĻ°āĻžāĻ° āĻĒāĻ°, āĻāĻŽāĻžāĻĻā§āĻ° sitest_enabled-āĻ sites_available āĻĨā§āĻā§ my_app.conf-āĻ āĻāĻāĻāĻŋ āĻ¸āĻŋāĻŽāĻ˛āĻŋāĻā§āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻāĻŦāĻ nginx āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻāĻžāĻ˛ā§ āĻāĻ°ā§āĻ¨āĨ¤
... # old code in mail.yml
- name: Create symlink to sites-enabled
file:
src: /etc/nginx/sites-available/my_app.conf
dest: /etc/nginx/sites-enabled/my_app.conf
state: link
- name: restart nginx
service:
name: nginx
state: restarted
āĻāĻāĻžāĻ¨ā§ āĻ¸āĻŦāĻāĻŋāĻā§āĻ āĻ¸āĻšāĻ - āĻāĻŦāĻžāĻ° āĻŽā§āĻāĻžāĻŽā§āĻāĻŋ āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āĻ¸āĻŋāĻ¨āĻā§āĻ¯āĻžāĻā§āĻ¸ āĻ¸āĻš āĻāĻ¤ā§āĻ¤āĻ°āĻ¯ā§āĻā§āĻ¯ āĻŽāĻĄāĻŋāĻāĻ˛āĨ¤ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻāĻāĻž āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻ āĻāĻā§āĨ¤ āĻĒā§āĻ°āĻ¤āĻŋāĻŦāĻžāĻ° nginx āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻāĻžāĻ˛ā§ āĻāĻ°āĻžāĻ° āĻā§āĻ¨ āĻŽāĻžāĻ¨ā§ āĻ¨ā§āĻāĨ¤ āĻāĻĒāĻ¨āĻŋ āĻāĻŋ āĻ˛āĻā§āĻˇā§āĻ¯ āĻāĻ°ā§āĻā§āĻ¨ āĻ¯ā§ āĻāĻŽāĻ°āĻž āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻ˛āĻŋāĻāĻŋ āĻ¨āĻž āĻ¯ā§āĻŽāĻ¨: "āĻāĻāĻŋ āĻāĻāĻāĻžāĻŦā§ āĻāĻ°ā§āĻ¨", āĻ¸āĻŋāĻ¨āĻā§āĻ¯āĻžāĻā§āĻ¸āĻāĻŋ āĻĻā§āĻāĻ¤ā§ āĻ āĻ¨ā§āĻāĻāĻž "āĻāĻ āĻ āĻŦāĻ¸ā§āĻĨāĻž āĻĨāĻžāĻāĻž āĻāĻāĻŋāĻ¤" āĻāĻ° āĻŽāĻ¤ā§āĨ¤ āĻāĻŦāĻ āĻĒā§āĻ°āĻžāĻ¯āĻŧāĻļāĻ āĻāĻāĻŋ āĻ āĻŋāĻ āĻā§āĻāĻžāĻŦā§ āĻāĻ¤ā§āĻ¤āĻ°āĻ¯ā§āĻā§āĻ¯ āĻāĻžāĻ āĻāĻ°ā§āĨ¤ āĻ¯āĻĻāĻŋ āĻā§āĻ°ā§āĻĒāĻāĻŋ āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§āĻ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ āĻĨāĻžāĻā§, āĻŦāĻž āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻĒā§āĻ¯āĻžāĻā§āĻāĻāĻŋ āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§āĻ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻž āĻĨāĻžāĻā§, āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻ¨āĻ¸āĻŋāĻŦāĻ˛ āĻāĻāĻŋ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻŦā§ āĻāĻŦāĻ āĻāĻžāĻāĻāĻŋ āĻāĻĄāĻŧāĻŋāĻ¯āĻŧā§ āĻ¯āĻžāĻŦā§āĨ¤ āĻāĻāĻžāĻĄāĻŧāĻžāĻ, āĻĢāĻžāĻāĻ˛āĻā§āĻ˛āĻŋ āĻāĻĒāĻŋ āĻāĻ°āĻž āĻšāĻŦā§ āĻ¨āĻž āĻ¯āĻĻāĻŋ āĻ¤āĻžāĻ°āĻž āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§ āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§ āĻ¯āĻž āĻāĻā§ āĻ¤āĻžāĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻŽā§āĻ˛ā§āĨ¤ āĻāĻŽāĻ°āĻž āĻāĻāĻŋāĻ° āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻ¨āĻŋāĻ¤ā§ āĻĒāĻžāĻ°āĻŋ āĻāĻŦāĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĢāĻžāĻāĻ˛āĻā§āĻ˛āĻŋ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻž āĻšāĻ˛ā§āĻ nginx āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻāĻžāĻ˛ā§ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋāĨ¤ āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ°ā§āĻāĻŋāĻ¸ā§āĻāĻžāĻ° āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļāĻŋāĻāĻž āĻ°āĻ¯āĻŧā§āĻā§:
# Copy nginx configs and start it
- name: enable service nginx and start
systemd:
name: nginx
state: started
enabled: yes
- name: Copy the nginx.conf
copy:
src: nginx.conf
dest: /etc/nginx/nginx.conf
owner: root
group: root
mode: '0644'
backup: yes
register: restart_nginx
- name: Copy template my_app.conf
template:
src: my_app_conf.j2
dest: /etc/nginx/sites-available/my_app.conf
owner: root
group: root
mode: '0644'
register: restart_nginx
- name: Create symlink to sites-enabled
file:
src: /etc/nginx/sites-available/my_app.conf
dest: /etc/nginx/sites-enabled/my_app.conf
state: link
- name: restart nginx
service:
name: nginx
state: restarted
when: restart_nginx.changed
āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĢāĻžāĻāĻ˛āĻā§āĻ˛āĻŋāĻ° āĻāĻāĻāĻŋ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻšāĻ˛ā§, āĻāĻāĻāĻŋ āĻ
āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻŦā§ āĻāĻŦāĻ āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛āĻāĻŋ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻŋāĻ¤ āĻšāĻŦā§ restart_nginx
. āĻāĻŦāĻ āĻāĻ āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛āĻāĻŋ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻŋāĻ¤ āĻšāĻ˛ā§āĻ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻāĻŋ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻāĻžāĻ˛ā§ āĻāĻ°āĻž āĻšāĻŦā§āĨ¤
āĻāĻŦāĻ, āĻ āĻŦāĻļā§āĻ¯āĻ, āĻāĻĒāĻ¨āĻžāĻā§ āĻŽā§āĻ˛ āĻĒā§āĻ˛ā§āĻŦā§āĻā§ nginx āĻā§āĻŽāĻŋāĻāĻž āĻ¯ā§āĻ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤
postgresql āĻ¸ā§āĻ āĻāĻĒ āĻāĻ°āĻž āĻšāĻā§āĻā§
āĻāĻŽāĻžāĻĻā§āĻ° āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽāĻĄ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ postgresql āĻ¸āĻā§āĻ°āĻŋāĻ¯āĻŧ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻ¯ā§āĻāĻžāĻŦā§ āĻāĻŽāĻ°āĻž nginx āĻāĻ° āĻ¸āĻžāĻĨā§ āĻāĻ°ā§āĻāĻŋ, āĻāĻŦāĻ āĻāĻŽāĻ¨ āĻāĻāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻ¯āĻž āĻāĻŽāĻ°āĻž āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻāĻŦāĻ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻ¨āĻŋāĻā§āĻ āĻ
ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻāĻ°āĻ¤ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŦāĨ¤
āĻāĻ¸ā§āĻ¨ āĻāĻāĻāĻŋ āĻā§āĻŽāĻŋāĻāĻž āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŋ /ansible/roles/postgresql/tasks/main.yml
:
# Create user in postgresql
- name: enable postgresql and start
systemd:
name: postgresql
state: started
enabled: yes
- name: Create database user
become_user: postgres
postgresql_user:
name: "{{ db_user }}"
password: "{{ db_password }}"
role_attr_flags: SUPERUSER
- name: Create database
become_user: postgres
postgresql_db:
name: "{{ db_name }}"
encoding: UTF-8
owner: "{{ db_user }}"
āĻāĻŽāĻŋ āĻā§āĻāĻžāĻŦā§ āĻāĻ¨āĻā§āĻ¨ā§āĻāĻ°āĻŋāĻ¤ā§ āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛ āĻ¯ā§āĻ āĻāĻ°āĻ¤ā§ āĻšāĻ¯āĻŧ āĻ¤āĻž āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻāĻ°āĻŦ āĻ¨āĻž, āĻāĻāĻŋ āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§ āĻ
āĻ¨ā§āĻāĻŦāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§, āĻ¸ā§āĻāĻ¸āĻžāĻĨā§ postgresql_db āĻāĻŦāĻ postgresql_user āĻŽāĻĄāĻŋāĻāĻ˛āĻā§āĻ˛āĻŋāĻ° āĻ¸āĻŋāĻ¨āĻā§āĻ¯āĻžāĻā§āĻ¸āĨ¤ āĻāĻ°āĻ āĻ¤āĻĨā§āĻ¯ āĻĄāĻā§āĻŽā§āĻ¨ā§āĻā§āĻļāĻ¨ āĻĒāĻžāĻāĻ¯āĻŧāĻž āĻ¯āĻžāĻŦā§. āĻāĻāĻžāĻ¨ā§ āĻ¸āĻŦāĻā§āĻ¯āĻŧā§ āĻāĻāĻ°ā§āĻˇāĻŖā§āĻ¯āĻŧ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļāĻ¨āĻž āĻšāĻ¯āĻŧ become_user: postgres
. āĻāĻ¸āĻ˛ āĻŦāĻŋāĻˇāĻ¯āĻŧāĻāĻŋ āĻšāĻ˛ āĻ¯ā§ āĻĄāĻŋāĻĢāĻ˛ā§āĻāĻ°ā§āĻĒā§, āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° postgres āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻ°āĻ postgresql āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§ āĻ
ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻ°āĻ¯āĻŧā§āĻā§ āĻāĻŦāĻ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ¸ā§āĻĨāĻžāĻ¨ā§āĻ¯āĻŧāĻāĻžāĻŦā§āĨ¤ āĻāĻ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļāĻŋāĻāĻžāĻāĻŋ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻ° (āĻ¯āĻĻāĻŋ āĻāĻŽāĻžāĻĻā§āĻ° āĻ
ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻĨāĻžāĻā§, āĻ
āĻŦāĻļā§āĻ¯āĻ) āĻĒāĻā§āĻˇ āĻĨā§āĻā§ āĻāĻŽāĻžāĻ¨ā§āĻĄāĻā§āĻ˛āĻŋ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻ
āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§āĻ¯āĻŧāĨ¤
āĻāĻāĻžāĻĄāĻŧāĻžāĻ, āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻāĻāĻŋ āĻ˛āĻžāĻāĻ¨ āĻ¯ā§āĻ āĻāĻ°āĻ¤ā§ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§ pg_hba.conf-āĻ āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻā§ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§ āĻĒā§āĻ°āĻŦā§āĻļā§āĻ° āĻ
āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻāĻŋāĻ¤ā§āĨ¤ āĻāĻāĻŋ āĻāĻāĻāĻāĻžāĻŦā§ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻ¯ā§āĻāĻžāĻŦā§ āĻāĻŽāĻ°āĻž nginx āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°ā§āĻāĻŋāĨ¤
āĻāĻŦāĻ āĻ āĻŦāĻļā§āĻ¯āĻ, āĻāĻĒāĻ¨āĻžāĻā§ āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻĒā§āĻ˛ā§āĻŦā§āĻā§ postgresql āĻā§āĻŽāĻŋāĻāĻž āĻ¯ā§āĻ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤
rbenv āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻ°ā§āĻŦāĻŋ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻž āĻšāĻā§āĻā§
Ansible-āĻāĻ° rbenv-āĻāĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻŽāĻĄāĻŋāĻāĻ˛ āĻ¨ā§āĻ, āĻ¤āĻŦā§ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻāĻŋāĻ āĻ°āĻŋāĻĒā§āĻāĻŋāĻāĻ°āĻŋ āĻā§āĻ˛ā§āĻ¨ āĻāĻ°ā§ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻ
āĻ¤āĻāĻŦ, āĻāĻ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻāĻŋ āĻ¸āĻŦāĻā§āĻ¯āĻŧā§ āĻ
-āĻŽāĻžāĻ¨āĻ āĻšāĻ¯āĻŧā§ āĻāĻ ā§āĨ¤ āĻāĻ¸ā§āĻ¨ āĻ¤āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻā§āĻŽāĻŋāĻāĻž āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŋ /ansible/roles/ruby_rbenv/main.yml
āĻāĻŦāĻ āĻāĻ¸ā§āĻ¨ āĻāĻāĻŋ āĻĒā§āĻ°āĻŖ āĻāĻ°āĻž āĻļā§āĻ°ā§ āĻāĻ°āĻŋ:
# Install rbenv and ruby
- name: Install rbenv
become_user: "{{ user }}"
git: repo=https://github.com/rbenv/rbenv.git dest=~/.rbenv
āĻāĻ āĻāĻĻā§āĻĻā§āĻļā§āĻ¯ā§ āĻāĻŽāĻ°āĻž āĻ¯ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻāĻŋ āĻ¤āĻžāĻ° āĻ āĻ§ā§āĻ¨ā§ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻ°āĻž āĻāĻŦāĻžāĻ° become_user āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļāĻŋāĻāĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŋāĨ¤ āĻ¯ā§āĻšā§āĻ¤ā§ rbenv āĻ¤āĻžāĻ° āĻšā§āĻŽ āĻĄāĻŋāĻ°ā§āĻā§āĻāĻ°āĻŋāĻ¤ā§ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻž āĻāĻā§, āĻāĻŦāĻ āĻŦāĻŋāĻļā§āĻŦāĻŦā§āĻ¯āĻžāĻĒā§ āĻ¨āĻ¯āĻŧāĨ¤ āĻāĻŦāĻ āĻāĻŽāĻ°āĻž āĻ°āĻŋāĻĒā§āĻāĻŋāĻāĻ°āĻŋ āĻā§āĻ˛ā§āĻ¨ āĻāĻ°āĻ¤ā§ āĻāĻŋāĻ āĻŽāĻĄāĻŋāĻāĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŋ, āĻ°ā§āĻĒā§ āĻāĻŦāĻ āĻĄā§āĻ¸ā§āĻ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°ā§āĨ¤
āĻāĻ° āĻĒāĻ°ā§, āĻāĻŽāĻžāĻĻā§āĻ° bashrc-āĻ rbenv init āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻ¨ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻāĻŦāĻ āĻ¸ā§āĻāĻžāĻ¨ā§ PATH-āĻ rbenv āĻ¯ā§āĻ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻžāĻĻā§āĻ° āĻ˛āĻžāĻāĻ¨āĻāĻ¨āĻĢāĻžāĻāĻ˛ āĻŽāĻĄāĻŋāĻāĻ˛ āĻ°āĻ¯āĻŧā§āĻā§:
- name: Add rbenv to PATH
become_user: "{{ user }}"
lineinfile:
path: ~/.bashrc
state: present
line: 'export PATH="${HOME}/.rbenv/bin:${PATH}"'
- name: Add rbenv init to bashrc
become_user: "{{ user }}"
lineinfile:
path: ~/.bashrc
state: present
line: 'eval "$(rbenv init -)"'
āĻ¤āĻžāĻ°āĻĒāĻ°ā§ āĻāĻĒāĻ¨āĻžāĻā§ āĻ°ā§āĻŦāĻŋ_āĻŦāĻŋāĻ˛ā§āĻĄ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§:
- name: Install ruby-build
become_user: "{{ user }}"
git: repo=https://github.com/rbenv/ruby-build.git dest=~/.rbenv/plugins/ruby-build
āĻāĻŦāĻ āĻ āĻŦāĻļā§āĻˇā§ āĻ°ā§āĻŦāĻŋ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°ā§āĻ¨. āĻāĻāĻŋ rbenv āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻāĻ°āĻž āĻšāĻ¯āĻŧ, āĻ āĻ°ā§āĻĨāĻžā§, āĻ¸āĻšāĻāĻāĻžāĻŦā§ bash āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻĻāĻŋāĻ¯āĻŧā§:
- name: Install ruby
become_user: "{{ user }}"
shell: |
export PATH="${HOME}/.rbenv/bin:${PATH}"
eval "$(rbenv init -)"
rbenv install {{ ruby_version }}
args:
executable: /bin/bash
āĻāĻŽāĻ°āĻž āĻŦāĻ˛āĻŋ āĻā§āĻ¨ āĻāĻŽāĻžāĻ¨ā§āĻĄāĻāĻŋ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻāĻŦāĻ āĻā§āĻ¨āĻāĻŋ āĻĻāĻŋāĻ¯āĻŧā§āĨ¤ āĻ¯āĻžāĻāĻšā§āĻ, āĻāĻāĻžāĻ¨ā§ āĻāĻŽāĻ°āĻž āĻŦā§āĻāĻ¤ā§ āĻĒā§āĻ°ā§āĻāĻŋ āĻ¯ā§ ansible āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻāĻā§ bashrc-āĻ āĻĨāĻžāĻāĻž āĻā§āĻĄ āĻ°āĻžāĻ¨ āĻāĻ°ā§ āĻ¨āĻžāĨ¤ āĻāĻ° āĻŽāĻžāĻ¨ā§ āĻšāĻ˛ āĻ¯ā§ rbenv āĻāĻāĻ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻā§ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻ¸āĻāĻā§āĻāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤
āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻāĻŋ āĻāĻ āĻāĻžāĻ°āĻŖā§ āĻ¯ā§ āĻļā§āĻ˛ āĻāĻŽāĻžāĻ¨ā§āĻĄā§āĻ° āĻāĻāĻāĻŋ āĻāĻ¤ā§āĻ¤āĻ°āĻ¯ā§āĻā§āĻ¯ āĻĻā§āĻˇā§āĻāĻŋāĻā§āĻŖ āĻĨā§āĻā§ āĻā§āĻ¨ āĻ āĻŦāĻ¸ā§āĻĨāĻž āĻ¨ā§āĻāĨ¤ āĻ āĻ°ā§āĻĨāĻžā§, āĻ°ā§āĻŦāĻŋāĻ° āĻāĻ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖāĻāĻŋ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻž āĻāĻā§ āĻāĻŋāĻ¨āĻž āĻ¤āĻž āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧāĻāĻžāĻŦā§ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻž āĻšāĻŦā§ āĻ¨āĻžāĨ¤ āĻāĻŽāĻ°āĻž āĻ¨āĻŋāĻā§āĻ°āĻžāĻ āĻāĻāĻŋ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ:
- name: Install ruby
become_user: "{{ user }}"
shell: |
export PATH="${HOME}/.rbenv/bin:${PATH}"
eval "$(rbenv init -)"
if ! rbenv versions | grep -q {{ ruby_version }}
then rbenv install {{ ruby_version }} && rbenv global {{ ruby_version }}
fi
args:
executable: /bin/bash
āĻ¯āĻž āĻ āĻŦāĻļāĻŋāĻˇā§āĻ āĻĨāĻžāĻā§ āĻ¤āĻž āĻšāĻ˛ āĻŦāĻžāĻ¨ā§āĻĄāĻ˛āĻžāĻ° āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻž:
- name: Install bundler
become_user: "{{ user }}"
shell: |
export PATH="${HOME}/.rbenv/bin:${PATH}"
eval "$(rbenv init -)"
gem install bundler
āĻāĻŦāĻ āĻāĻŦāĻžāĻ°, āĻŽā§āĻ˛ āĻĒā§āĻ˛ā§āĻŦā§āĻā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻŽāĻŋāĻāĻž ruby_rbenv āĻ¯ā§āĻ āĻāĻ°ā§āĻ¨āĨ¤
āĻļā§āĻ¯āĻŧāĻžāĻ° āĻāĻ°āĻž āĻĢāĻžāĻāĻ˛āĨ¤
āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻāĻžāĻŦā§, āĻ¸ā§āĻāĻāĻĒ āĻāĻāĻžāĻ¨ā§ āĻ¸āĻŽā§āĻĒāĻ¨ā§āĻ¨ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻāĻ°āĻĒāĻ°ā§, āĻ¯āĻž āĻ
āĻŦāĻļāĻŋāĻˇā§āĻ āĻĨāĻžāĻā§ āĻ¤āĻž āĻšāĻ˛ āĻā§āĻ¯āĻžāĻĒāĻŋāĻ¸ā§āĻā§āĻ°āĻžāĻ¨ā§ āĻāĻžāĻ˛āĻžāĻ¨ā§ āĻāĻŦāĻ āĻāĻāĻŋ āĻ¨āĻŋāĻā§āĻ āĻā§āĻĄāĻāĻŋ āĻ
āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻāĻ°āĻŦā§, āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻĄāĻŋāĻ°ā§āĻā§āĻāĻ°āĻŋ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŦā§ āĻāĻŦāĻ āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻāĻŋ āĻāĻžāĻ˛ā§ āĻāĻ°āĻŦā§ (āĻ¯āĻĻāĻŋ āĻ¸āĻŦāĻāĻŋāĻā§ āĻ¸āĻ āĻŋāĻāĻāĻžāĻŦā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°āĻž āĻĨāĻžāĻā§)āĨ¤ āĻ¯āĻžāĻāĻšā§āĻ, Capistrano-āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻžāĻ¯āĻŧāĻ āĻ
āĻ¤āĻŋāĻ°āĻŋāĻā§āĻ¤ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĢāĻžāĻāĻ˛ā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻ¯āĻŧ, āĻ¯ā§āĻŽāĻ¨ database.yml
āĻŦāĻž .env
āĻāĻā§āĻ˛āĻŋ nginx-āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻĢāĻžāĻāĻ˛ āĻāĻŦāĻ āĻā§āĻŽāĻĒā§āĻ˛ā§āĻāĻā§āĻ˛āĻŋāĻ° āĻŽāĻ¤ā§āĻ āĻ
āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻāĻāĻŋ āĻ¸ā§āĻā§āĻˇā§āĻŽāĻ¤āĻž āĻāĻā§. āĻĢāĻžāĻāĻ˛ āĻ
āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻāĻ°āĻžāĻ° āĻāĻā§, āĻāĻĒāĻ¨āĻžāĻā§ āĻ¤āĻžāĻĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻĄāĻŋāĻ°ā§āĻā§āĻāĻ°āĻŋ āĻāĻžāĻ āĻžāĻŽā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§, āĻāĻ°āĻāĻŽ āĻāĻŋāĻā§:
# Copy shared files for deploy
- name: Ensure shared dir
become_user: "{{ user }}"
file:
path: "{{ app_path }}/shared/config"
state: directory
āĻāĻŽāĻ°āĻž āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻāĻāĻŋ āĻĄāĻŋāĻ°ā§āĻā§āĻāĻ°āĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°āĻŋ āĻāĻŦāĻ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§ āĻāĻ¨āĻ¸āĻŋāĻŦāĻ˛ āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧāĻāĻžāĻŦā§ āĻ āĻāĻŋāĻāĻžāĻŦāĻāĻĻā§āĻ° āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŦā§āĨ¤
āĻāĻ¤ā§āĻ¤āĻ°āĻ¯ā§āĻā§āĻ¯ āĻāĻ˛ā§āĻ
āĻāĻŽāĻ°āĻž āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§āĻ āĻā§āĻ¨ā§āĻāĻŋ āĻ¯ā§ āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛āĻā§āĻ˛āĻŋāĻ¤ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻ° āĻĒāĻžāĻ¸āĻāĻ¯āĻŧāĻžāĻ°ā§āĻĄā§āĻ° āĻŽāĻ¤ā§ āĻā§āĻĒāĻ¨ āĻĄā§āĻāĻž āĻĨāĻžāĻāĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻ¯āĻĻāĻŋ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§ āĻĨāĻžāĻā§āĻ¨ .env
āĻāĻŦā§āĻĻāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĢāĻžāĻāĻ˛, āĻāĻŦāĻ database.yml
āĻ¤āĻžāĻ°āĻĒāĻ° āĻāĻ°āĻ āĻāĻ āĻ§āĻ°āĻ¨ā§āĻ° āĻ¸āĻŽāĻžāĻ˛ā§āĻāĻ¨āĻžāĻŽā§āĻ˛āĻ āĻ¤āĻĨā§āĻ¯ āĻĨāĻžāĻāĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻ¤āĻžāĻĻā§āĻ° āĻā§āĻ āĻĨā§āĻā§ āĻāĻĄāĻŧāĻžāĻ˛ āĻāĻ°āĻž āĻāĻžāĻ˛āĨ¤ āĻāĻ āĻāĻĻā§āĻĻā§āĻļā§āĻ¯ā§ āĻāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧ
āĻāĻ˛āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻĢāĻžāĻāĻ˛ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻ¯āĻžāĻ /ansible/vars/all.yml
(āĻāĻāĻžāĻ¨ā§ āĻāĻĒāĻ¨āĻŋ āĻšā§āĻ¸ā§āĻā§āĻ° āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻā§āĻ°ā§āĻĒā§āĻ° āĻāĻ¨ā§āĻ¯ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻĢāĻžāĻāĻ˛ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨, āĻ āĻŋāĻ āĻāĻ¨āĻā§āĻ¨ā§āĻāĻ°āĻŋ āĻĢāĻžāĻāĻ˛ā§āĻ° āĻŽāĻ¤ā§: production.yml, staging.yml, āĻāĻ¤ā§āĻ¯āĻžāĻĻāĻŋ)āĨ¤
āĻāĻ¨āĻā§āĻ°āĻŋāĻĒā§āĻ āĻāĻ°āĻž āĻāĻŦāĻļā§āĻ¯āĻ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛ āĻ
āĻŦāĻļā§āĻ¯āĻ āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ yml āĻ¸āĻŋāĻ¨āĻā§āĻ¯āĻžāĻā§āĻ¸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻ āĻĢāĻžāĻāĻ˛ā§ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻāĻ°āĻ¤ā§ āĻšāĻŦā§:
# System vars
user_password: 123qweasd
db_password: 123qweasd
# ENV vars
aws_access_key_id: xxxxx
aws_secret_access_key: xxxxxx
aws_bucket: bucket_name
rails_secret_key_base: very_secret_key_base
āĻāĻ° āĻĒāĻ°ā§ āĻāĻ āĻĢāĻžāĻāĻ˛āĻāĻŋ āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻĻāĻŋāĻ¯āĻŧā§ āĻāĻ¨āĻā§āĻ°āĻŋāĻĒā§āĻ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§:
ansible-vault encrypt ./vars/all.yml
āĻ¸ā§āĻŦāĻžāĻāĻžāĻŦāĻŋāĻāĻāĻžāĻŦā§āĻ, āĻāĻ¨āĻā§āĻ°āĻŋāĻĒā§āĻ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻāĻĒāĻ¨āĻžāĻā§ āĻĄāĻŋāĻā§āĻ°āĻŋāĻĒāĻļāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻĒāĻžāĻ¸āĻāĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻ¸ā§āĻ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻāĻ āĻāĻŽāĻžāĻ¨ā§āĻĄāĻāĻŋ āĻāĻ˛ āĻāĻ°āĻžāĻ° āĻĒāĻ°ā§ āĻāĻĒāĻ¨āĻŋ āĻĢāĻžāĻāĻ˛ā§āĻ° āĻāĻŋāĻ¤āĻ°ā§ āĻā§ āĻĨāĻžāĻāĻŦā§ āĻ¤āĻž āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤
āĻāĻ° āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ā§ ansible-vault decrypt
āĻĢāĻžāĻāĻ˛āĻāĻŋ āĻĄāĻŋāĻā§āĻ°āĻŋāĻĒā§āĻ āĻāĻ°āĻž, āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻž āĻāĻŦāĻ āĻ¤āĻžāĻ°āĻĒāĻ° āĻāĻŦāĻžāĻ° āĻāĻ¨āĻā§āĻ°āĻŋāĻĒā§āĻ āĻāĻ°āĻž āĻ¯āĻžāĻ¯āĻŧāĨ¤
āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻĒāĻ¨āĻžāĻā§ āĻĢāĻžāĻāĻ˛āĻāĻŋ āĻĄāĻŋāĻā§āĻ°āĻŋāĻĒā§āĻ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻ¨āĻžāĨ¤ āĻāĻĒāĻ¨āĻŋ āĻāĻāĻŋ āĻāĻ¨āĻā§āĻ°āĻŋāĻĒā§āĻā§āĻĄ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻ¯ā§āĻā§āĻ¤āĻŋ āĻ¸āĻš āĻĒā§āĻ˛ā§āĻŦā§āĻ āĻāĻžāĻ˛āĻžāĻ¨ --ask-vault-pass
. Ansible āĻĒāĻžāĻ¸āĻāĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻāĻžāĻāĻŦā§, āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛ āĻĒā§āĻ¨āĻ°ā§āĻĻā§āĻ§āĻžāĻ° āĻāĻ°āĻŦā§ āĻāĻŦāĻ āĻāĻžāĻāĻā§āĻ˛āĻŋ āĻāĻžāĻ˛āĻžāĻŦā§āĨ¤ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĄā§āĻāĻž āĻāĻ¨āĻā§āĻ°āĻŋāĻĒā§āĻ āĻāĻ°āĻž āĻĨāĻžāĻāĻŦā§āĨ¤
āĻšā§āĻ¸ā§āĻ āĻāĻŦāĻ āĻāĻ¤ā§āĻ¤āĻ°āĻ¯ā§āĻā§āĻ¯ āĻāĻ˛ā§āĻā§āĻ° āĻŦā§āĻļ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻā§āĻ°ā§āĻĒā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻāĻŽāĻžāĻ¨ā§āĻĄāĻāĻŋ āĻāĻ°āĻāĻŽ āĻāĻŋāĻā§ āĻĻā§āĻāĻžāĻŦā§:
ansible-playbook -i inventory ./playbook.yml -l "staging" --ask-vault-pass
āĻ¤āĻŦā§ āĻāĻŽāĻŋ āĻāĻĒāĻ¨āĻžāĻā§ āĻĒā§āĻ˛ā§āĻŦā§āĻ āĻāĻŦāĻ āĻā§āĻŽāĻŋāĻāĻžāĻ° āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻĒāĻžāĻ ā§āĻ¯ āĻĻā§āĻŦ āĻ¨āĻž, āĻāĻāĻŋ āĻ¨āĻŋāĻā§āĻ āĻ˛āĻŋāĻā§āĻ¨āĨ¤ āĻāĻžāĻ°āĻŖ āĻāĻŦāĻžāĻŦāĻĻāĻŋāĻšāĻŋāĻ¤āĻž āĻāĻŽāĻ¨āĻ - āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻŦā§āĻāĻ¤ā§ āĻ¨āĻž āĻĒāĻžāĻ°ā§āĻ¨ āĻ¯ā§ āĻā§ āĻāĻ°āĻž āĻĻāĻ°āĻāĻžāĻ°, āĻ¤āĻŦā§ āĻāĻāĻŋ āĻāĻĒāĻ¨āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻŋ āĻāĻ°āĻŦā§ āĻ¨āĻžāĨ¤
āĻāĻ¤ā§āĻ¸: www.habr.com