Ansible は、構成管理、アプリのデプロイメントなどの DevOps タスクを自動化できる、人気のある無料のオープンソース自動化ツールです。
Ansible と GitHub Actions を組み合わせることで、メイン ブランチへのプッシュなど、リポジトリ内で特定のイベントが発生するたびに Ansible プレイブックの実行を自動化できます。
このチュートリアルでは、コードの変更に応じてデプロイメントを自動化するのに役立つ Ansible プレイブックを実行するように GitHub アクションを設定する方法を説明します。
前提条件:
続行する前に、次のものが揃っていることを確認してください。
- GitHub アカウント
- 既存の GitHub リポジトリ
- Ansible プレイブックの基本的な知識
- Ansible がタスクを実行できるターゲット マシン。 Ansible が GitHub ランナーからこれらのマシンに接続できることを確認します。
ステップ 1: Ansible 環境をセットアップする
Ansible プレイブックとすべての関連ファイルを作成し、GitHub リポジトリに保存します。これには、ロール テンプレート、変数などのファイルが含まれる必要があります。
プレイブックの例は次のとおりです。
---- 名前: Nginx が Web サーバーにインストールされていることを確認します。
ホスト: ウェブサーバー
なる:はい
タスク:
- 名前: apt キャッシュの更新
適切:
アップデートキャッシュ: はい
- 名前: Nginx のインストール
適切:
名前: nginx
状態: 現在
Ansible のターゲット マシンを指定するインベントリ ファイルがあることを確認してください。
ステップ 2: GitHub リポジトリでシークレットをセットアップする
Playbook には SSH キーやパスワードなどの機密情報が必要であるため、GitHub はシークレットを安全に保存する方法を提供します。
GitHub リポジトリに移動します。
[設定] > [シークレットと変数] -> [アクション] -> [新しいリポジトリ シークレット] に移動します。
ステップ 3: GitHub アクション ワークフローを作成する
リポジトリ内に「.github/workflows」ディレクトリを作成します。このディレクトリ内に、ワークフローの YAML ファイルを作成します。
次のようにワークフローを追加します。
名前: Ansible プレイブックの実行の上:
押す:
支店:
- マスター
仕事:
展開する:
実行: ubuntu-最新
手順:
- 名前: チェックアウト コード
使用: アクション/checkout@v2
- 名前: SSH キーの設定
実行: |
echo '${{ Secrets.SSH_PRIVATE_KEY }}' > private_key.pem
chmod 600 プライベートキー.pem
- 名前: Ansible プレイブックの実行
実行: |
sudo aptアップデート
sudo apt install -y ansible
ansible-playbook -i hosts.ini my-playbook.yml --private-key=private_key.pem --user=${{ Secrets.REMOTE_USER }}
ステップ 4: ワークフローをトリガーする
master ブランチにプッシュするたびに、GitHub はこのワークフローを自動的に実行し、プレイブックを実行します。
結論
今回はこれで終わりです。 Github アクションを使用して Ansible プレイブックを実行する方法について説明しました。