はじめに
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になってPython2系はなくなったみたいでPythonコマンドは使えないようです。
またpipもpip3だけになって2つの環境があるという気持ち悪い感じがなくなって作業をしていても気持ちいい感じです。
ではここまで。