Ansible 실행 절차와 간단한 자습서

7981 단어 AnsibleVagrant

Ansible 실행 처리



1, 인벤토리에서 대상 노드 찾기
2, 컨트롤 노드에서 플레이북을 파이썬 코드로 변환
3, 제어 노드에서 대상 노드로 ssh 연결, 파이썬 코드 보내기
4, 타겟 노드에서 파이썬 코드를 실행하고 출력 결과를 컨트롤 노드에 반환
5, 제어 노드, 대상 노드에서 파이썬 코드 삭제

라고 하는 순서를 밟아 실행됩니다.
여기서 플레이북과 인벤토리는 각각 다음과 같은 의미가 되지 않습니다.

플레이북 및 인벤토리



・플레이북・・・처리의 흐름을 정의한 파일. Chef에서 말하는, recipe,
Puppet에서 말하는 manifest에 해당하는 파일

YAML 형식으로 작성되기 때문에 코딩 경험이없는 사람도 쉽게 걸 수 있습니다.
· 인벤토리 ... 대상 노드의 정보가 작성된 파일



이제 간단한 샘플을 실행해 보겠습니다.
먼저 vagrant에서 3가지 가상 환경을 시작하자.

Vagrantfile
Vagrant.configure("2") do |config|
  config.vm.define "host" do |node|
    node.vm.box = "bento/centos-7"
    node.vm.hostname = "host"
    node.vm.synced_folder "host", "/vagrant"
    node.vm.network :private_network, ip: "192.168.33.11"

    node.vm.provision "shell", inline: <<-SHELL
      sudo yum -y install epel-release
      sudo yum install -y gcc python-pip python-devel openssl-devel libffi-devel
      sudo pip install --upgrade pip setuptools
      sudo pip install ansible
    SHELL

  end

  config.vm.define "web" do |node|
    node.vm.box = "bento/centos-7"
    node.vm.hostname = "web"
    node.vm.synced_folder "web", "/vagrant"
    node.vm.network :private_network, ip: "192.168.33.12"
  end

  config.vm.define "db" do |node|
    node.vm.box = "bento/centos-7"
    node.vm.hostname = "db"
    node.vm.synced_folder "db", "/vagrant"
    node.vm.network :private_network, ip: "192.168.33.13"
  end

end


여기서는 host(192.168.33.11)가 컨트롤 노드, web(192.168.33.12)와 db(192.168.33.13)가 타겟 노드라는 형태입니다.
$vagrant up
$vagrant ssh host

에서 호스트로 들어갑니다.
여기서, host로부터 web, db에 각각 ssh로 접속하기 위해서, 열쇠의 설정을 해 갑니다.

키 설정



<가상 환경 호스트에서>
#秘密鍵、公開鍵の作成
$ssh-keygen -t rsa
#全てにenterでok
#仮想環境host(コントロールノード)に公開鍵登録
$ssh-copy-id localhost
#パスワード vagrant

#(ターゲットのーど)仮想環境web(192.168.33.12)に公開鍵登録
$ssh-copy-id 192.168.33.12
#パスワード vagrant

#(ターゲットのーど)仮想環境db(192.168.33.13)に公開鍵登録
$ssh-copy-id 192.168.33.13
#パスワード vagrant

이제 호스트에서
'ssh 192.168.33.12'와 'ssh 192.168.33.13'과 같은 형태로 연결할 수 있어야 합니다.
(즉, 「3, 컨트롤 노드로부터 타겟 노드에 ssh 접속, python의 코드를 송신」의 단계를 밟게 되었다고 하는 것)

host 안에서/vagrant 이하로 가서,
$cd /vagrant

sample_inventory.ini 만들기

sample_inventory.ini
[host]
localhost

[web]
192.168.33.12

[db]
192.168.33.13

여기까지 설정은 종료입니다.

다음 명령을 실행하여 sample_inventory.ini에 정의한 각 노드에 대해 ping 명령을 실행하여 값이 반환되는지 확인합니다.
$ ansible all -i sample_inventory.ini -m ping

192.168.33.12 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
192.168.33.13 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
localhost | SUCCESS => {
    "changed": false,
    "ping": "pong"
}


위와 같이 되어 있으면 OK입니다.

좋은 웹페이지 즐겨찾기