カテゴリー別アーカイブ: ansible

ansible_localを使う

<目的>
Vagrantにて、ホストOSにAnsibleを入れずに、ゲストOSに入れたAnsibleでサーバを構成する

<前提>
Vagrantがインストール済み。

<Ansible設定ファイルの作成>
以下サンプル(YAML形式で記載する。)

- hosts: all
  become: yes
  user: vagrant
  tasks:
    - name: install the latest version of Apache
      yum:
        name=httpd 
        state=latest

hostsはとりあえずallとしておく。指定したい場合は別途hostsファイルの作成が必要。
下手にホスト名を記載してもうまく動かない。

<Vagrant設定ファイルの作成>
以下サンプル。

Vagrant.configure("2") do |config|
  config.vm.box = "bento/centos-7.2"

  config.vm.network :forwarded_port, guest: 22, host: 2222, id: "ssh", auto_correct: true

  config.vm.provision "shell", :path => "provision/install.sh"
  config.vm.provision "ansible_local" do |ansible|
      ansible.playbook = "provision/abe.yml"
      ansible.limit = 'all'
      ansible.verbose = true
      ansible.install = true
  end
end

provision/install.shは、AnsibleをyumでゲストOSにインストールするためのシェル。
適当に作っておけば良い。

<起動手順>
vagrant init bento/centos-7.2
vagrant plugin install vagrant-vbguest
vagrant up –provision
<動作確認>
vagrant ssh
とすればログインできる。
>sudo -s
とすればrootになれるので、あとはお好きなように何なりと。

Ansible2.0

<前提>
・VagrantにてOSのインストール済み
・SSHログイン可能なユーザを使用する

<条件>
AnsibleがHostOSからGuestOSの設定する方法とGuestOS内Localで実施する方法とがあります。
今回は、GuestOS内Localで実施する方法を記載する。

<手順1:インストール>

>yum update
>yum install epel-release
>yum install ansible --enablerepo=epel-testing

ホストの設定

vi /etc/ansible/hosts

<手順2:playbook作成>
こんな感じにYAML形式にて作成

- hosts: localhost
  tasks:
    - name: install apache
      yum: name=httpd

<手順3:実行>
はじめに動作確認

ansible all -m ping -i hosts

実行

ansible-playbook sample.yml