LoginSignup
4
4

More than 3 years have passed since last update.

社内でAnsibleもくもく会

Last updated at Posted at 2019-12-04

社内で「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を操作してもらう。
image.png

この演習はスペックを必要としないため、最も安い t3a.nano インスタンスを利用することにした。
「t3a」ファミリーは AMD EPYC 7000 シリーズプロセッサを搭載したサーバー上で提供され、 t3a.nano は東京リージョンではオンデマンドで \$0.0061/hour 、スポットだと
\$0.0018/hour で利用できる。日本円にするとスポットで0.2円/時間くらい。
めちゃ安い。4台を一日中立ち上げておいても20円くらいで使うことが出来る。
参考にこの3カ月の価格推移を貼るがとても安定している。
image.png

環境の構築

VMの作成

「もくもく会参加者」 × 4 + 1 台のインスタンスを作成する。AMIはAmazon Linux2を利用した。
t3a.nano は、すべてのAZでは提供されていないようで、現在の価格で出てきたAZに紐づくサブネットを選択して作成する必要がある。
(これをやらないと自分の環境では1cがデフォルトになっていてスポットリクエストが失敗した。)
image.png

セキュリティグループは、テキストの中にApacheサーバーを構築する演習があるため、80番ポートを開けておく。
image.png

もくもく会管理者用Ansibleのインストール

インスタンスが立ち上がったら1台(Control Node(Master))にAnsibleをインストールする。このMasterにインストールしたAnsibleからもくもく会参加者用のControl Nodeを構築していく。

image.png

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ファイルを作成する。

/etc/ansible/hosts
[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の作成

ansible_install.yml
---
- 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使えるかもと業務への適用を考え始めた。
  • 演習環境の構築自体がとても勉強になった
4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4