Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Ansibleで始めるサーバ構成の自動化

Sorarinu
February 13, 2020

 Ansibleで始めるサーバ構成の自動化

Sorarinu

February 13, 2020
Tweet

More Decks by Sorarinu

Other Decks in Technology

Transcript

  1. IaC を取り入れることのメリデメ メリット • 手作業による作業ミスのリスクがなくなる • コードレビューを行うことで品質の向上を図 れる • バージョン管理することにより過去に遡れる

    • コード化することで別環境でも使いまわせる • 本番環境に SSH しなくて良い デメリット • それなりに学習コストがかかる • サーバ構成の変更に若干の時間がかかる • ガチガチに管理し始めると心が疲弊してくる • きちんとコード規約を定めて定期的に更新し ておかないとコードが腐る
  2. Ansible とは • RedHat 社が提供している OSS ◦ https://github.com/ansible/ansible • サーバのミドルウェアをコードで構築・管理ができる

    • エージェントが不要で SSH 接続ができればプロビジョニング可能 • 冪等性があり、何度実行しても同じ結果が得られる(はず) • 構成ファイルは基本的に YAML で書く必要がある
  3. 基本的なディレクトリ構造 . ├── group_vars ・・・・・・・・・・・ ホスト、環境ごとの変数を定義 │ └── testing.yml ├── all.yml ・・・・・・・・・・・

    全てのホストで実行する playbook ├── webservers.yml ・・・・・・・・・・・ ホストグループごとの playbook ├── site.yml ・・・・・・・・・・・ どの playbook を読み込むか(いわゆる main 関数的な) ├── hosts ・・・・・・・・・・・ 各サーバの SSH 情報などを記述する └── roles ・・・・・・・・・・・ ミドルウェアをインストールするなどの role をここで用意する └── hello_world └── tasks │ └── main.yml ・・・・・・・・・・・ hello_world role の task を書く ├── templates │ └── hello.txt.j2 ・・・・・・・・・・・ task で設置したいファイルなど └── files Ansible ディレクトリ構成ベストプラクティス
  4. Ansible をインストールしよう ▪ Amazon Linux / RHEL / CentOS >

    sudo yum -y install epel-release > sudo yum --enablerepo=epel install ansible > ansible --version ▪ Mac > brew install ansible > ansible --version
  5. インベントリファイルを編集する > make init > vim hosts [servers] hogehoge ansible_ssh_host=xxx.xxx.xxx.xxx

    ansible_ssh_port=22 ホスト名などホストが 識別できるもの ローカルから実行する場合は 対象サーバのパブリック IP アドレス 対象サーバ上から実行する場合は 127.0.0.1 などのループバックアドレス
  6. Ansible を書いてみよう 以下を実現する Ansible の Playbook を書いてみましょう! • 英語の格言、名言を出力してくれる fortune-mod

    を yum でインストール • fortune の実行結果を Ansible の実行結果に出力する ansible yum module ansible shell register debug ヒント