社内でAnsibleもくもく会
社内で「Ansibleもくもく会」をやってみたきっかけ
- Ansible、よく聞くけど触ったことがない。
- なんだか社内で自動化自動化言われている。けどRPAは何か好きになれない。
- 「自動化」というキーワードに夢を見がち…
- とりあえずAnsibleを使ってどういうことが出来るかを知りたい
こんな状態だったので、Ansibleユーザー会が毎月(?)行っている「Ansibleもくもく会」に参加してみた。
参加したところ、テキストがとても分かりやすく Ansible完全に理解した ため、社内でも布教することにした。
もくもく会の作り方
もくもく会をやるために用意するのはこの2つ。
- テキスト
- 演習環境
テキスト
テキストは本家(Ansibleもくもく会)のものをそのまま利用。
Towerはライセンスが必要な気がしたので、ひとまず Section.1 をやることにした。
Ansible Workshop - Ansible for Red Hat Enterprise Linux
Ansibleとは?みたいなところはあまりうまく説明できないので事前にWEB上で拾った資料を読んできてもらうことに。
Ansibleご紹介(PDFファイル)
演習環境 (Section.1用)
環境の設計と経費
演習環境はAWS上に下記のように構築。1人あたり4台のVMを提供。
ControllerにAnsibleをインストールし、そこから3台のRemote Nodeを操作してもらう。
この演習はスペックを必要としないため、最も安い t3a.nano インスタンスを利用することにした。
「t3a」ファミリーは AMD EPYC 7000 シリーズプロセッサを搭載したサーバー上で提供され、 t3a.nano は東京リージョンではオンデマンドで \$0.0061/hour 、スポットだと
\$0.0018/hour で利用できる。日本円にするとスポットで0.2円/時間くらい。
めちゃ安い。4台を一日中立ち上げておいても20円くらいで使うことが出来る。
参考にこの3カ月の価格推移を貼るがとても安定している。
環境の構築
VMの作成
「もくもく会参加者」 × 4 + 1 台のインスタンスを作成する。AMIはAmazon Linux2を利用した。
t3a.nano は、すべてのAZでは提供されていないようで、現在の価格で出てきたAZに紐づくサブネットを選択して作成する必要がある。
(これをやらないと自分の環境では1cがデフォルトになっていてスポットリクエストが失敗した。)
セキュリティグループは、テキストの中にApacheサーバーを構築する演習があるため、80番ポートを開けておく。
もくもく会管理者用Ansibleのインストール
インスタンスが立ち上がったら1台(Control Node(Master))にAnsibleをインストールする。このMasterにインストールしたAnsibleからもくもく会参加者用のControl Nodeを構築していく。
epelリポジトリを有効化し、yumでAnsibleをインストールする。
$ sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
$ sudo yum install -y ansible
インストールができたことを確認する。
$ ansible --version
ansible 2.9.1
config file = /etc/ansible/ansible.cfg
configured module search path = [u'/home/ec2-user/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python2.7/site-packages/ansible
executable location = /usr/bin/ansible
python version = 2.7.16 (default, Sep 13 2019, 20:28:21) [GCC 7.3.1 20180303 (Red Hat 7.3.1-5)]
受講者用環境の構築
もくもく会受講者用環境を作るために下記の3点を行う。
・もくもく会管理者用Inventoryファイルの作成
・受講者用環境へのAnsibleインストール
・受講者用Remote環境へのSSHログイン用の秘密鍵を配置
Inventoryファイルの作成
初期設定ではInventoryファイルは/etc/ansible/hosts
となっている。
受講者用のControl NodeにするノードのIPアドレスでInventoryファイルを作成する。
[mokumoku_control]
control_1 ansible_host= (IPアドレス)
control_2 ansible_host= (IPアドレス)
control_3 ansible_host= (IPアドレス)
[mokumoku_control:vars]
ansible_user=ec2-user
ansible_ssh_private_key_file=(秘密鍵のパス)
Inventoryファイルが出来たら、Exercise 1.2 - Ad-hoc コマンドを実行しよう
に従って、実行できることを確かめます。SSHのKnown hostsに入っていないため、初回は確認を求められます。yes
でknown hostsに登録しましょう。
AnsibleをインストールするためのAnsible Playbookの作成
---
- name: Ansible installed
hosts: mokumoku_master
become: yes
tasks:
- name: enable epel package
yum:
name: https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
state: present
- name: install ansible
yum:
name: ansible
state: latest
enablerepo: epel
- name: put private key
copy:
src= (秘密鍵のファイルパス)
dest=/home/ec2-user/.ssh
owner=ec2-user
mode=0644
Ansible Playbookの実行
Playbookが正しく記述できているかを確かめるため--syntax-check
をつけて実行してみます。
$ ansible-playbook --syntax-check ansible_install.yml
を実行し、エラーがなければ$ ansible-playbook ansible_install.yml
を実行すると受講者用Control Nodeの出来上がり。
完成
これで環境は完成したため、受講者にVMにログインしてもらい、Inventoryファイルを書いてもらえば演習環境が完成する。Inventoryファイルの書き方も勉強のひとつとして自動化することはやめた。(実装が面倒だったというのは秘密。)
Ansibleもくもく会をやってみて
良かった点
- みんながAnsible使えるかもと業務への適用を考え始めた。
- 演習環境の構築自体がとても勉強になった
Author And Source
この問題について(社内でAnsibleもくもく会), 我々は、より多くの情報をここで見つけました https://qiita.com/kuroshun/items/4718770c9d1381683e43著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .