0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

初めてAnsibleを使ってみた③ モジュール検証

Posted at

もう少しプレイブックの中身を細かく勉強してみます。
前回の記事

プレイブックで使用できるモジュールについては
以下のサイトにあるようです。が、数多すぎぃ・・

ということでネットサーフィンしながら実際に
自分がサーバ構築する想定で使えそうなモジュールを検証してみます。
またプレイブックの中で変数を使用できるようなので合わせて試してみます。

Vars 変数宣言

変数を宣言して使用することができます。
複数個所で使用している名称とかは変数化したほうがメンテナンスは
楽になりますね。

変数の書き方はかなり柔軟でそれぞれの強弱があります。
今回は検証なので同じプレイブック内に記載する方法を試してみます。

前回作成したプレイブック

- hosts: all
  tasks:
    - name: slインストール
      yum: name=sl

一部変数化したプレイブック

- hosts: all
  vars:
    sname: sl
  tasks:
    - name: slインストール
      yum: name={{sname}}

この二つのプレイブックは同じ結果になります。
変数snameを宣言してslという値を設定します。
参照するときは{{変数名}}とします。

凄いまとまっていて参考にさせていただいた記事

copy モジュール

Ansibleサーバにあるファイル、ディレクトリをクライアントにコピーします。
初期構築時にコンフィグファイルをコピーすることがあるので
使う機会は多そうに感じます。

コンフィグファイル(仮)をAnsibleサーバーに作成します。

image.png

次にプレイブックを作成します。
折角なので変数で指定しました。
srcにコピー元(Ansibleサーバ側)のファイルの絶対パス
destにクライアント側の配置先ディレクトリを指定します。

- hosts: all
  vars:
    sname: /home/cp.file
  tasks:
    - name: ファイルコピーテスト
      copy:
        src={{sname}}
        dest=/root

実行してみると正常に完了しました。

image.png

クライアント側にファイルがコピーされていることを確認しました。
image.png

コマンドを再実行すると既にファイルがあるのでchanged=0のままでOKになります。

image.png

ちなみにクライアント側でcp.fileの中身を書き換えた後で
コマンドを再実行するとファイルが上書きされたので冪等性は担保されてるということですね。

unarchive モジュール

copyモジュールに似ていますが
こちらはAnsibleサーバにあるtar.gzファイルをクライアントにコピーし
展開まで実施してくれるモジュールです。
コピー後のtar.gzファイルは削除して展開後のファイルだけが残ります。

テスト用に圧縮ファイル作成
image.png

プレイブックを作成します。

- hosts: all
  vars:
    sname: /home/test.tar.gz
  tasks:
    - name: ファイルコピーテスト
      unarchive:
        src={{sname}}
        dest=/root

実行すると正常に完了しました。

クライアント側を確認すると /root配下に圧縮ファイルが展開されています。
展開前の圧縮ファイルはありません。

image.png

yum モジュール

yumモジュールは前回にコマンドで実施した通りです。
クライアント側でyumを実行する場合に使用します。
stateを指定することでアンインストールも可能になります。
presentでインストール removedでアンインストール

- hosts: all
  tasks:
    - name: slインストール
      yum: 
          name=sl
          state=present

名前にバージョンを入れていない場合は最新をインストールすることになるので
コマンド実行時期でバージョンが変わる可能性があります。

yumはdnfにリダイレクトされているのでこちらの記事を参照

file モジュール

ファイル、ディレクトリを作成します。
権限や所有者の設定も可能です。

プレイブックを作成します。
ちょっと小細工をやってみたくて1つのプレイブックにまとめてみました。

- hosts: all
  vars:
    sname: testdir
  tasks:
    - name: ディレクトリ作成
      file:
        path=/root/{{sname}}
        state=directory
        mode=0755
    - name: ファイル作成
      file:
        path=/root/{{sname}}/testfile
        state=touch
        owner=root
        group=root

実行してクライアントを確認するとディレクトリとファイルが作成されていることが
確認できました。

image.png

user モジュール

ユーザーの作成削除編集をすることができます。
パスワードは平文で良くなったみたいなのでとりあえずそのまま作成します。

- hosts: all
  vars:
    sname: test
  tasks:
    - name: ユーザー作成
      user:
        name={{sname}}
        password=password
        state=present

実行すると結果はOKですがハッシュ化しなさいと怒られます。。
image.png

ちょっと調べて↓の様に修正してみました。

- hosts: all
  vars:
    sname: test
    pword: password
  tasks:
    - name: ユーザー作成
      user:
        name={{sname}}
        password={{ pword | password_hash('sha512') }}
        state=present

結果はOKですが非推奨ってでる・・ぐぬぬ・・・
image.png

アカウント自体は作成できておりSSH接続もできました。

image.png

service モジュール

サービスを開始したり停止したりできます。
検証としてhttpdをインストールして開始するプレイブックを作成します。

- hosts: all
  vars:
    sname: httpd
  tasks:
    - name: httpインストール
      yum:
        name={{sname}}
        state=present
    - name: serviceスタート
      service:
        name=httpd
        state=started
    - name: FW無効化
      service:
        name=firewalld
        state=stopped

コマンド実行後webブラウザで確認してみると
テストページが表示されました。

image.png

最初上手く表示できなくて
FW無効化にたどり着くまでちょっと時間かかりました。。

プレイブックの小技が少しありそうなので次回はそのあたりを
試してみたいと思います。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?