【Ansible 튜토리얼】 기초의 기초의 기초의 기초편
소개
이것은 어디까지나 개인 메모입니다.
Ansible을 만질 기회가 있었기 때문에
막힌 곳 등을 해소하면서 메모 정도에 튜토리얼로서 남기고 싶은 Qiita를 이용했습니다.
전제 조건
vagrant Box 받기
centos6.7이되고 있습니다만 이것은 임의로 이름을 붙일 수가 있기 때문에
centos-6.7 등의 경우도 있습니다.
box list 확인
hostPC(mac)
$ vagrant box list
centos6.7 (virtualbox, 0)
box를 다운로드한다(※centos6.7이 있으면 스킵)
hostPC(mac)
$ vagrant box add centos6.7 https://github.com/CommanderK5/packer-centos-template/releases/download/0.6.7/vagrant-centos-6.7.box
작업 디렉토리 만들기 vagrant 파일 편집
작업 디렉토리 작성 및 이동
hostPC(mac)
$ mkdir ~/ansible
$ cd ~/ansible
Vagrantfile 만들기
hostPC(mac)
# centos6.7の部分はvagrantのbox名
$ vagrant init centos6.7
$ vi Vagrantfile
자신은 완전히 지우고 다음을 기입했습니다.
Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.ssh.insert_key = false
config.vm.define "webserver1" do |webserver1|
webserver1.vm.hostname = "webserver1"
webserver1.vm.box = "centos6.7"
webserver1.vm.network "private_network", ip: "192.168.33.21"
end
config.vm.define "webserver2" do |webserver2|
webserver2.vm.hostname = "webserver2"
webserver2.vm.box = "centos6.7"
webserver2.vm.network "private_network", ip: "192.168.33.22"
end
end
vagrant 시작
hostPC(mac)
$ vagrant up
상세 확인
hostPC(mac)
$ vagrant ssh-config
Host webserver1
HostName 127.0.0.1
User vagrant
Port 2200
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
PasswordAuthentication no
IdentityFile /Users/{User名}/.vagrant.d/insecure_private_key
IdentitiesOnly yes
LogLevel FATAL
Host webserver2
HostName 127.0.0.1
User vagrant
Port 2201
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
PasswordAuthentication no
IdentityFile /Users/{User名}/.vagrant.d/insecure_private_key
IdentitiesOnly yes
LogLevel FATAL
이번에는
webserver1을 ansible의 적용 대상으로
webserver2를 ansible 환경으로 운영합시다.
이때 나는 실패했다고 생각했다.
ansible이라는 이름과
target으로 나누면 좋았다고. . . orz
ansible 설치
hostPC(mac)
$ vagrant ssh webserver2
(ssh) webserver2
[vagrant@webserver2 ~]$ sudo yum -y install ansible
ssh-key 설정 관계
ansible 환경에서 대상 환경으로 ssh로 연결할 수 있도록
ssh 키를 webserver2=>webserver1로 보냅니다.
ssh-key 생성 및 복사
(ssh) webserver2
[vagrant@webserver2 ~]$ ssh-keygen -t rsa
[vagrant@webserver2 ~]$ ssh-copy-id [email protected]
# 色々聞かれますがenter連打でokです
# 最後にpasswordを聞かれますが、vagrantが初期パスワードになっています
ssh 연결 확인
(ssh) webserver2
[vagrant@webserver2 ~]$ ssh [email protected]
[vagrant@webserver1 ~]$
# 2から1にノンパスで行けるようになったので成功です
인벤토리 작성
인벤토리는 대상 서버 목록과 같습니다.
일반적으로 hosts라는 이름으로 사용되는 것 같습니다.
인벤토리 작성
hostPC(mac)
$ vi ~/ansible/hosts
~/ansible/hosts
[webserver]
192.168.33.21
기분 전환에 소통 확인을 해 본다
(ssh) webserver2
[vagrant@webserver2 ~]$ cd /vagrant/
[vagrant@webserver2 vagrant]$ ansible all -i hosts -m ping
192.168.33.21 | SUCCESS => {
"changed": false,
"ping": "pong"
}
(여기서 본편) Playbook 만들기
playbook을 이용해 target인 webserver1에 nginx를 인스톨 시킵니다
또한 playbook에는 크게 나누어 3개의 정의가 필요하게 된다고 합니다
target
vars
task
이상을 바탕으로 playbook을 만듭니다.
playbook 작성
hostPC(mac)
$ vi ~/ansible/nginx.yml
~/ansible/nginx.yml
- hosts: webserver
become: True
tasks:
- name: install nginx repo
yum: name=http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm state=present
- name: install nginx
yum: name=nginx
- name: restart nginx
service: name=nginx state=restarted
각각의 의미
※Ansible에서는 정해진 디렉토리 등으로부터 정보를 암묵적으로 취득하기 위해, 의존관계를 이해해 둘 필요가 있다.
ansible 실행
적용 실행
(ssh) webserver2
[vagrant@webserver2 vagrant]$ ansible-playbook -i hosts nginx.yml
다시 실행해 보세요.
(ssh) webserver2
[vagrant@webserver2 vagrant]$ ansible-playbook -i hosts nginx.yml
nginx는 이미 install되어 있기 때문에 ok입니다.
그러나 restart 작업은 여러 번 할 수 있기 때문에
changed=1이 되어 있는 것을 알 수 있습니다.
표시해보기
마지막으로
설치물 등을 모두 코드베이스로 남길 수 있는 것은 편리하네요.
뭔가 변경되었을 때 github 등에서 차이 등을 확인할 수 있습니다.
무엇보다 눈에 보이는 형태로 남길 수있는 것은 매우 좋습니다!
공유도 간단하고 설치에 실수 등도 일어나지 않기 때문에 멋집니다!
참고자료 : Vagrant에서 Ansible 초보 핸즈온
: 【튜토리얼】Ansible 기본 키 (설치에서 복수 서버로 변경 적용)
: Ansible Documentation
Reference
이 문제에 관하여(【Ansible 튜토리얼】 기초의 기초의 기초의 기초편), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/k-waragai/items/52d140e89edddbb4ee59텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)