Vagrant.configure("2") do |config|
# Define VM
config.vm.define "ansible" do |ubuntu|
ubuntu.vm.box = "ubuntu/focal64"
ubuntu.vm.hostname = "ansible"
ubuntu.vm.network "private_network", ip: "192.168.56.100"
ubuntu.vm.provider "virtualbox" do |vb|
vb.name = "ansible"
vb.cpus = 2
vb.memory = 3000
end
end
config.vm.define "node1" do |ubuntu|
ubuntu.vm.box = "ubuntu/focal64"
ubuntu.vm.hostname = "node1"
ubuntu.vm.network "private_network", ip: "192.168.56.110"
ubuntu.vm.provider "virtualbox" do |vb|
vb.name = "node1"
vb.cpus = 2
vb.memory = 2048
end
end
config.vm.provision "shell", inline: <<-SHELL
sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config
sed -i 's/archive.ubuntu.com/mirror.kakao.com/g' /etc/apt/sources.list
sed -i 's/security.ubuntu.com/mirror.kakao.com/g' /etc/apt/sources.list
systemctl restart ssh
SHELL
end
~/.ssh/config
Host ansible
HostName 192.168.56.100
User vagrant
IdentityFile C:\Users\Administrator\vagrant\.vagrant\machines\ansible\virtualbox\private_key
Host node1
HostName 192.168.56.110
User vagrant
IdentityFile C:\Users\Administrator\vagrant\.vagrant\machines\node1\virtualbox\private_key
### 터미널을 연 상태에서..
ssh ansible
ssh node1
### 이렇게만 해줘도 접속이 가능하다
sudo apt update
sudo apt install -y ansible
ansible에서..
ssh-keygen
cat ~/.ssh/id_rsa.pub #공개키
cat ~/.ssh/id_rsa #개인키
cat authorized_keys #window의 공개키
쉽게 설명해보면 공개키
는 개인키
를 이용해서 만들었고
개인키로 만든 공개키
가 접속하려는 가성머신의 authorized_keys
에 등록 되어있으면 ssh접속
이 가능하다.
지금은 윈도우의 개인키로만든 공개키가 ansible의 authorized_keys에 등록되어있다.
ansible에서..
cat ~/.ssh/id_rsa.pub #공개키
공개키를 복사해서
node1의 autorized_keys에 붙여넣으면
node1에서..
vi ~/.ssh/authorized_keys
ansible에서..
ssh vagrant@192.168.56.110
접속이 가능하다
ANSIBLE_CONFIG
(enironment variable if set)
ansible.cfg
(현재 작업 디렉토리)
~/.ansible.cfg
(홈디렉토리)
/etc/ansible/ansible.cfg
: 기본 설정 파일
위 4가지 방식으로 구성파일을 적용시킬 수 있다.
vi ~/.ansible.cfg
[defaults]
inventory = hosts.ini
vi hosts.ini
[node1]
192.168.56.110
ansible all -m ping
그리고.. 구성파일에서
vi ~/.ansible.cfg
[defaults]
remote_user=><SSH_USER>
ask_pass=<True|False>
host-key-checking=False #이 값을 false해주면 ssh fingerprint 질문을 스킵할 수 있다. 꿀팁
[privilege_escalation]
become=<True|False>
become
become_method=<sudo|su>
become_user=<SUDO_USER>
ansible-config list
: 설정 가능한 모든 항목 표시ansible-config dump
: 모든 설정의 기본 값 및 변경 값 표시ansible-config view
: 현재 적용되는 설정 파일의 내용 표시### 예를들어
ansible-playbook deployment.yaml -b #하면 sudo권한으로 실행
### 설치된 모듈 확인하기
ansible-doc -l
ansible-doc <MODULE_NAME>
mkdir ~/playbook
vi ~/playbook/install_httpd.yaml
- name: Update repositories cache and install "apache2" package
hosts: node1
tasks:
- apt:
name: apache2
state: present #설치의 상태를 나타냄
update_cache: yes #설치하기 전에 apt-get update를 해줌
- service:
name: apache2
enabled: yes #apache2를 enable시켜서 재부팅시에도 실행하도록 설정
state: started #apache2를 실행시킴
ansible-playbook install_httpd.yaml -b