[Ansible引入步骤] 从安装到执行Playbook
在这篇帖子中能够实现的事情。
-
- VirtualboxでController/Targetを1ノードずつ作成
-
- ControllerからTargetに対してansibleのplaybookを流して、Targetの初期構築を行うまでを範囲とする。
ホスト名の変更
パッケージのインストール(vim,git)
ansibleはvirtualenvのモジュールとしてインストールする
建立环境
共通 – “common” or “shared”
-
- 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にあり
modules : http://docs.ansible.com/ansible/modules.html
roles : https://galaxy.ansible.com/
Push型の構成管理用途が一般的
- YAML形式のPlaybookをpythonに変換して、管理対象に配布/実行
Ansible Terminology: Ansible术语
TermDescriptionInventoryTarget Nodeを指定。INI形式 PlaybookTarget Nodeで実行したい処理の流れを記載。YAML形式
建立环境
控制器/目标:创建一般用户(Ansible)
useradd -s /bin/bash -m ansible
passwd ansible
# sudo権限の付与
echo "ansible ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/ansible
控制器:公开密钥认证设置
su - ansible
cd ~
ssh-keygen
ssh-copy-id -i .ssh/id_rsa.pub 192.168.56.152 (Target NodeのIPアドレス)
控制器:安装必要的软件包。
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"
控制器:创建操作目录
su - ansible
cd ~
mkdir -p practice/{inventory,{group,host}_vars,roles,playbooks}
touch practice/{inventory/inventory.ini,group_vars/all.yml}
控制器:创建库存文件
su - ansible
cd ~/practice
vim inventory/inventory.ini
[practice_servers]
practice01 ansible_host=192.168.56.152 #Target Node
控制器:进行ansible的通信确认
# Target Nodeのサーバ情報がResponseとして返ってくることを確認
ansible practice_servers -i inventory/inventory.ini -m setup
控制器:创建Playbook。
su - ansible
cd ~/practice
vim 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。
su - ansible
cd ~/practice
ansible-playbook -i inventory/inventory.ini playbooks/initial_setting.yml
请查考
使用的Vagrantfile来构建
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
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