Skip to main content

Ansible Basics


Installation​

python3 -m pip install ansible

Control node​

ssh-keygen -t ed25519 -N "" -f <keyfile>
eval "$(ssh-agent -s)"
ssh-add <path>/<id file>
ssh-copy-id -i<path>/<id file>.pub [-p<port>] <managed user>@<managed ip>

Inventory​

κΈ°λ³Έ 인벀토리 νŒŒμΌμ€ /etc/ansible/hosts νŒŒμΌμž…λ‹ˆλ‹€.

all:
hosts:
<hostname>:
ansible_host: <ip|url>
ansible_port: <port>
children:
<group>:
hosts:
<hostname>:
<group>:
children:
<group>:
ansible all -m ping

Directory structure​

ansible/
β”œβ”€β”€ inventories/
β”‚Β Β  β”œβ”€β”€ production/
β”‚ β”‚ β”œβ”€β”€ hosts # production μ„œλ²„μš© inventory
β”‚ β”‚ β”œβ”€β”€ group_vars/
β”‚ β”‚ β”‚ β”œβ”€β”€ <group 1>.yaml # νŠΉμ • 그룹에 λŒ€ν•œ λ³€μˆ˜
β”‚ β”‚ β”‚ β”œβ”€β”€ <group 2>.yaml
β”‚ β”‚ β”‚ └── ...
β”‚ β”‚ └── host_vars/
β”‚ β”‚ β”œβ”€β”€ <hostname 1>.yaml # νŠΉμ • ν˜ΈμŠ€νŠΈμ— λŒ€ν•œ λ³€μˆ˜
β”‚ β”‚ β”œβ”€β”€ <hostname 2>.yaml
β”‚ β”‚ └── ...
β”‚Β Β  └── dev/
β”‚ β”œβ”€β”€ hosts
β”‚ β”œβ”€β”€ group_vars/
β”‚ β”‚ β”œβ”€β”€ <group 1>.yaml
β”‚ β”‚ β”œβ”€β”€ <group 2>.yaml
β”‚ β”‚ └── ...
β”‚ └── host_vars/
β”‚ β”œβ”€β”€ <hostname 1>.yaml
β”‚ β”œβ”€β”€ <hostname 2>.yaml
β”‚ └── ...
β”œβ”€β”€ library/ # μ»€μŠ€ν…€ λͺ¨λ“ˆ
β”œβ”€β”€ module_utils/ # μ»€μŠ€ν…€ λͺ¨λ“ˆ μœ ν‹Έ
β”œβ”€β”€ filter_plugins/ # μ»€μŠ€ν…€ ν•„ν„° ν”ŒλŸ¬κ·ΈμΈ
β”œβ”€β”€ <purpose 1>.yaml # playbook
β”œβ”€β”€ <purpose 2>.yaml
β”œβ”€β”€ ...
└── roles/
β”œβ”€β”€ <role 1>/
β”‚Β Β  β”œβ”€β”€ tasks/
β”‚Β Β  β”‚Β Β  └── main.yaml
β”‚Β Β  β”œβ”€β”€ files/
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ <shell script>
β”‚Β Β  β”‚Β Β  └── <file>
β”‚Β Β  β”œβ”€β”€ vars/
β”‚Β Β  β”‚ └── main.yaml
β”‚Β Β  └── ...
β”œβ”€β”€ <role 2>/
β”‚Β Β  β”œβ”€β”€ tasks/
β”‚Β Β  β”‚Β Β  └── main.yaml
β”‚Β Β  β”œβ”€β”€ files/
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ <shell script>
β”‚Β Β  β”‚Β Β  └── <file>
β”‚Β Β  β”œβ”€β”€ vars/
β”‚Β Β  β”‚ └── main.yaml
β”‚Β Β  └── ...
└── ...

Playbook​

ansible-playbook <playbook>
  • -i|--inventory
  • -K|--ask-become-pass