1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Ansible Tower(AWX)でワイルドカード証明書を自動更新してみた

Last updated at Posted at 2020-04-12

Let's Encryptで証明書を作るときワイルドカード証明書を作りたい場合DNSによるドメイン証明をする必要があるので、自動化するためのワークフロー作ってみました

image.png

作ったものはこちらに
https://github.com/miyuk/ansible_cert_update

作った理由

うちの自宅にあるWebアプリケーションあるけど直接通信したくないから、DMZにLB入れていて運用していたんですが複数のLB作ることになったので証明書をまとめたいってのと複数のLBに同時に最新の証明書入れたいて思ったんで解決してみました。

使用ツール

  • Ansible AWX
  • ワイルドカード証明書が使えるリバースプロキシ(BIG-IP, Nginx, HAProxy)

workflow_cert_update

週一回ワークフローを動かすことで、証明書更新している。

image.png

ワークフローは下記の3フェーズに分かれている。

job_update_cert

AWX上で、Let's Encryptを更新する。更新したファイルはAWX上に保管し次回実行でも利用する。
内容としては、

  1. Let's Encryptの証明書検証で利用する鍵、アカウントなどを用意
  2. Let's Encryptチャレンジリクエスト
  3. リクエストで取得したトークンをDNSにセット。今回、Cloudflare APIを使ってDNSの動的アップデートを行っている
  4. Let's Encrypt証明書要求
  5. 成功すれば、証明書をプロジェクトフォルダに保管

job_deploy_xxxx

各LB毎に証明書ファイルをアップロードしてデプロイする。
今回、BIG-IP、Nginx、HAProxyで証明書更新(サービス再起動)できるようにしている。
また、自宅環境がDockerによって構成されているので、Nginx、HAProxyはDockerで更新をすることもできるようにしている。

job_cert_update_report

証明書更新が実際にできたかどうかを通知する。
AWXの通知でも良かったが、どこまで完了しているかは把握したかったので作成。

image.png

おわりに

この方法だと、複数の拠点にあるリバースプロキシあてでも証明書を更新することができるのでテスト環境で信頼できる証明書を色んなサーバに入れておきたいというニーズでも答えれるのかなと思います。
通知部分やAWX内での証明書の持ち方については、もう少し考察必要できればいいなと考えてますがAnsible関わる機会が減り、なかなか手つかず。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?