vagrant上のUbuntu20.04にansibleを導入しApacheを起動させる

# はじめに

Ansibleを使いこなせれば便利かなと以前より考えてましたが、最近時間ができたのでvagrant上にAnsible環境を構築してみました。

# まずはAnsibleを入れるまでの基盤整備

適当なフォルダを作成してその中でセットアップ
今回は、ubuntu20.04を選択

~~~
vagrant init grokology/ubuntu20.04server64-base
~~~

できたVagrantファイルをSSHターミナル接続ができるように　192.168.33.10の行をコメントアウト


~~~
vagrant up
~~~

これで仮想環境を起動します
まずは、環境を最新状態にするために

~~~
sudo apt update
sudo apt upgrade
~~~

を実行します。
ちなみに結構時間がかかりました。とまっているかと思うぐらい。

# いよいよAnsibleのインストール

以下を打ってAnsibleをインストールします。

~~~
sudo apt install ansible

インストール終了後バージョン等を確認

$ ansible --version
ansible 2.9.7  
config file = /etc/ansible/ansible.cfg  
configured module search path = ['/home/vagrant/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']  
ansible python module location = /home/vagrant/.local/lib/python3.8/site-packages/ansible  
executable location = /usr/bin/ansible  
python version = 3.8.2 (default, Mar 13 2020, 10:14:16) [GCC 9.3.0]
~~~

当初はpi3を使う予定で

~~~
sudo apt install python3-pip
~~~

してみたのですがAnsibleコマンドを認識しなかったのでaptを使いました。
結果的には、同じバージョンが入っているので現状ではこれで良しとしておきます。


つぎWindows上のvagrant用プライベートキーをvagant内にコピーしてパーミッションを変更

~~~
cp /vagrant/.vagrant/machines/default/virtualbox/private_key /home/vagrant/
cd /home/vagrant/
chmod 600 private_key
~~~

ここでは当初

~~~
/vagrant/.vagrant/machines/default/virtualbox/private_key
~~~

みたいな感じでprvate_keyの場所を設定してAnsibleコマンドを実行したら

~~~
UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\r\n@         WARNING: UNPROTECTED PRIVATE KEY FILE! 
@\r\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\r\nPermissions 0777 for '/vagrant/.vagrant/machines/default/virtualbox/private_key' are too open.\r\nIt is required that your private key files are NOT accessible by others.\r\nThis private key will be ignored.\r\nLoad key \"/vagrant/.vagrant/machines/default/virtualbox/private_key\": bad permissions\r\nvagrant@192.168.33.10: Permission denied (publickey,password).", "unreachable": true}
~~~

と怒られたのでUbuntu上でパーミッションを変更できる場所へコピーして変更しています。


# いよいよAnsible本体の設定をしてゆきます。

まずはAnsibleのディレクトリへ移動

~~~
cd /etc/ansible/
~~~

ここでhostsとplaybook.ymlを作成して保存します。

hosts

~~~
[vagrant]
192.168.33.10
~~~

playbook.yml

~~~
---
- hosts: vagrant
  remote_user: vagrant
  tasks:
    - name: install apache2
      apt:
        name: apache2
      become: true
    - name: apache2 is running
      systemd:
        state: started
        name: apache2
~~~

このあたりは
https://kazuhira-r.hatenablog.com/entry/2019/11/27/004108
の内容を使わせていただきました。

ここでAnsibleを実行するコマンドを打ちますと、処理が進んでゆきます

~~~
$ ansible-playbook -i hosts playbook.yml --private-key /home/vagrant/private_key

PLAY [vagrant] ***********************************************************************************************************************
TASK [Gathering Facts] ***********************************************************************************************************************
ok: [192.168.33.10]

TASK [install apache2] ***********************************************************************************************************************
changed: [192.168.33.10]

TASK [apache2 is running] ************************************************************************************************************************
ok: [192.168.33.10]

PLAY RECAP ************************************************************************************************************************
192.168.33.10              : ok=3    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

~~~

無事終了したらブラウザで表示を確認して終了です。

~~~
http://192.168.33.10/
~~~

Ubuntu20になってPython２系はなくなったみたいでPythonコマンドは使えないようです。
またpipもpip3だけになって２つの環境があるという気持ち悪い感じがなくなって作業をしていても気持ちいい感じです。


ではここまで。