4
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[ansible導入手順] インストールからPlaybook実行まで

Last updated at Posted at 2017-03-18

この投稿で達成できること

  • VirtualboxでController/Targetを1ノードずつ作成
  • ControllerからTargetに対してansibleのplaybookを流して、Targetの初期構築を行うまでを範囲とする。
  • ホスト名の変更
  • パッケージのインストール(vim,git)
  • ansibleはvirtualenvのモジュールとしてインストールする

構築環境

共通

  • Host OS : MacOS 10.9.5
  • VirtualBox : 4.3.12
  • Vagrant : 1.8.5

構成

  • Control Node : 192.168.56.151
    • OS : CentOS 7.0
    • python : 2.7.5
    • ansible : 2.2
  • Target Node : 192.168.56.152
    • OS : CentOS 7.0
    • python : 2.7.5

ansibleとは

概要/特徴

  • python製の構成管理自動化ツール
  • 終了条件を定義する形式で、冪等性の担保が特徴(一部自身で担保する必要があるコマンドも有り)
  • YAML形式のPlaybookで可読性が高い
  • エージェントレスのため導入コストが低い(管理対象にSSHとpythonが入っていればOK)
  • 既に作成済みの自作スクリプトの活用とも相性が良い
  • 3rd Partyでのモジュール開発/ロール開発が活発で、やりたいと思うことはだいたいDocuments/ansible-galaxyにあり
  • Push型の構成管理用途が一般的
    - YAML形式のPlaybookをpythonに変換して、管理対象に配布/実行

ansible用語

Term Description
Inventory Target Nodeを指定。INI形式 
Playbook Target Nodeで実行したい処理の流れを記載。YAML形式

環境構築

Controller/Target : 一般ユーザの作成(ansible)

一般ユーザ作成
useradd -s /bin/bash -m ansible
passwd ansible
# sudo権限の付与
echo "ansible ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/ansible

Controller : 公開鍵認証設定

su - ansible
cd ~
ssh-keygen
ssh-copy-id -i .ssh/id_rsa.pub 192.168.56.152 (Target NodeのIPアドレス)

Controller : 必要パッケージのインストール

インストールコマンド
su - ansible
sudo yum -y install epel-release
sudo yum -y install gcc libffi-devel python-devel openssl-devel python-pip
sudo pip install --upgrade pip

# virtualenvを利用しない場合は、不要
sudo pip install virtualenv
# virtualenvを利用しない場合は、不要
cd ~
virtualenv venv
source venv/bin/activate

pip install "ansible==2.2"

Controller : 作業用ディレクトリの作成

作業用ディレクトリの作成
su - ansible
cd ~
mkdir -p practice/{inventory,{group,host}_vars,roles,playbooks}
touch practice/{inventory/inventory.ini,group_vars/all.yml}

Controller : Inventoryファイルの作成

Inventoryファイルの作成
su - ansible
cd ~/practice
vim inventory/inventory.ini
inventory/inventory.ini
[practice_servers]
practice01 ansible_host=192.168.56.152 #Target Node 

Controller : ansibleの疎通確認

疎通確認
# Target Nodeのサーバ情報がResponseとして返ってくることを確認
ansible practice_servers -i inventory/inventory.ini -m setup

Controller : Playbook作成

Playbook作成
su - ansible
cd ~/practice
vim playbooks/initial_setting.yml
~/practice/playbooks/initial_setting.yml
---
- hosts: practice_servers
  become: yes # Target serverでsudo実施
  become_user: root # rootユーザに成り代わって実施

  tasks:
    - name: 1. Set hostname
      hostname:
        name: practice01

    - name: 2. Install required packages
      yum:
        name: "{{ item }}"
      with_items: 
        - vim
        - git

Playbookの実行

Playbookの実行
su - ansible
cd ~/practice
ansible-playbook -i inventory/inventory.ini playbooks/initial_setting.yml

参考

構築に利用したVagrantfile

Controller
Vagrant.configure("2") do |config|
  # Basic VM settings
  config.vm.box = "CentOS7.0"
  config.vm.box_download_insecure = true
  config.vm.hostname = 'controller'
  config.vm.network "private_network",ip:"192.168.56.151"
	config.vm.network :public_network, bridge: 'en0: Wi-Fi (AirPort)'
  config.vm.network :forwarded_port, id: "ssh", guest: 22, host: 2151
	config.ssh.insert_key = false

  # Virtual box setting
  config.vm.provider "virtualbox" do |vb|
    vb.customize ["modifyvm", :id, "--ostype", "Redhat_64"]
    vb.name = "ansible_controller"
    vb.memory = 512
    vb.cpus = 1
  end
end
Target_Node
Vagrant.configure("2") do |config|
  # Basic VM settings
  config.vm.box = "CentOS7.0"
  config.vm.box_download_insecure = true
  config.vm.hostname = 'practice'
  config.vm.network "private_network",ip:"192.168.56.152"
	config.vm.network :public_network, bridge: 'en0: Wi-Fi (AirPort)'
  config.vm.network :forwarded_port, id: "ssh", guest: 22, host: 2152
	config.ssh.insert_key = false

  # Virtual box setting
  config.vm.provider "virtualbox" do |vb|
    vb.customize ["modifyvm", :id, "--ostype", "Redhat_64"]
    vb.name = "practice"
    vb.memory = 512
    vb.cpus = 1
  end
end
4
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?