LoginSignup
3

More than 5 years have passed since last update.

2017年、Ansibleを使ったことについて書く

Last updated at Posted at 2017-12-14

はじめに

  • この記事は、自分が今年ゆめみで初めて Ansible を使った時の思い出を書きつづっています.

  • AnsibleはPythonで書かれている構成管理ツールです.

  • ここでは個人的な導入背景とかを綴っていきます.

    • コマンド説明とか、チューニングとかの説明は?
      • 公式やQiitaにたくさんありましたのでそちらで.

背景(導入まで)

  • 以下の背景で、構成管理ツールを使うことを考えました
    • 構築・運用してるシステムがあって
    • しばらくして段階的に状況が変わってきました
      • 日本以外の複数国に展開
      • 諸事情によりど新規でインフラ構築の必要に迫られる
      • 自分以外の人への引き継ぎが必要になる
    • 以下のようなことを構成決めて管理・共有したいと思った
      • 頻繁に行う作業のスクリプト化
        • デプロイ、M/Wインストール・設定、DBへのデータ投入, AWS関連作業など
      • 設定ファイルなど資材の管理
      • 対象サーバ、設定などパラメータ管理
      • 大きなスクリプトは役割や用途ごとに分割(分割単位)
      • 秘匿情報も入ってるので暗号化ルール
      • 複数サーバに対して作業する場合の方法
      • ログ残したりしたい

なぜ Ansible

  • 自分は以下の理由でAnsibleを使うことにしました(正直困っていたので、なんでも良かったのですが、、)
    • 背景に記載した、必要だと思うルールを定めてくれること(ルール制定・共有コストを省略)
    • たくさんの人に使われている(社会的信用,説明しやすい)
    • 情報が多い(学習しやすい)
    • お金がかからない(有償だと導入のハードルになる)
    • プログラミング言語の縛りがない(ない方が望ましい)
    • インストールと使い方が簡単(可能な限り)
    • 商用の鍵など秘匿情報を預けるような(いわゆるSaaS)は避けたい(承認フローの回避)

振り返って

  • 気づくとほぼYamlを書いていました.
    • Ansible(構文がyml)
    • Docker Compose(ymlで書く)
    • AWS CloudFormation(ymlでも書ける)
  • Ansibleで作成するファイルの一部はフォーマットがYAMLではない

    • 設定ファイル(ansible.cfg)
    • 設定対象サーバを記述するinventoryファイル(2.1以降であればyamlでも問題なく書ける)
    • YAMLだけで書けると個人的には楽
  • やりたかったことは一通りできて嬉しかったです.

    • 優先度高いものは共有できたと思っている
    • 全自動化とか、一番良い形で共有できたわけではない分があり残念
  • あ、GUIが無償で使えた

  • Ansible-Semaphore dockerで動かせて幸せでした.

    • docker-compose.ymlが下記にある為使わせて頂くことにしました
      • https://github.com/ansible-semaphore/semaphore
    • 一部変更して使いました
      1. MySQLにtaskの設定などを設定済みのデータを初期投入
      2. .ssh, ansible-vaultのパスファイルのマウント
        • ansible-vault pass、ssh接続情報は管理を分けたかったので
        • ホストサーバをマウントする形にした
      3. Nginxのproxyサーバは除去 (ローカルで動かす分には不要(そもそも動かなかった))
    • 幸せを感じた画面キャプチャ(リポジトリ名などは情報保護のため変更してます)
      • ansible-semaphore-login.png
      • ansible-semaphore-dashboard.png
      • ansible-semaphore-execute-task.png
  • Web API(認証付き)で、HTTP(S)経由でタスク実行もできた

    • こういう内容

curl -X POST \
    --cookie-jar /tmp/semaphore-cookie \
    --header 'Content-Type: application/json' \
    --header 'Accept: application/json' \
    -d '{"auth": "admin@localhost","password": "yumemi"}'
    "http://localhost:18081/api/auth/login"

TOKEN=$(curl -Ss -X POST -b /tmp/semaphore-cookie --header 'Content-Type: application/json' --header 'Accept: application/json' "http://localhost:18081/api/user/tokens" | jq -rc ".id")

curl -Ss -X POST 
    --header "Authorization: Bearer $TOKEN" \
    --header 'Content-Type: application/json' \
    --header 'Accept: application/json' \
    -d "{\"template_id\":1,\"debug\":false,\"dry_run\":true}" \
    "http://localhost:18081/api/project/1/tasks"

参考


以上, Ansibleと出会えてよかった2017振り返りですm(_ _)m

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
3