私はansibleファイルを内部のgitlabサーバーに移行している最中で、ansibleロールディレクトリをgitlabプロジェクトと同期させるさまざまな方法について混乱しています。最終目標は、私のチームにWeb経由でファイルを追加/編集させることですIDE、変更をコミットし、それらの変更をansible(awx)サーバーにプッシュすることです。チームはコマンドラインにログインしてプルを実行する必要はありません。これを実現する方法はいくつか考えられますが、gitlabのさまざまな機能に混乱があります。
1)私はレポミラーリング、特にgitlabのプッシュミラーを見てきました。これが機能するには、最低限のリポジトリである必要があります。 ansibleサーバーでベアリポジトリを作成すると、URLに含めるrepo.gitファイルが表示されません。これはミラーリングが意図されているもののようには聞こえませんが、それが実行可能な解決策かどうか疑問に思っています。
2)Webフック。受信後のWebフックを見てきましたが、適用方法がわかりません。サーバーはAWX(Ansible Web GUI)を実行しており、Webフックをリッスンするように別のWebサーバーを設定しない方がよいでしょう。 Webフックのしくみを誤解していない限り。
3)cron-毎分プルするようにcronjobを設定します。私はこれがうまくいくことを知っていますが、せいぜいハックです。可能であればgitツールと機能を使用したいと思います。
自動で本番環境に移行するリスクを理解していますが、この場合、AWXで重要な操作を実行していないため、リスクは低くなっています。私はこれらのいずれかで正しい軌道に乗っていますか?
GitLabのCI/CD関数 を見てください。これらは、リポジトリへのすべての変更(つまり、すべてのgit Push
またはWeb IDEによるすべてのコミット)後に複数のスクリプトアクションを実行するための意図された方法です。
単純なCIパイプラインは、構文チェックとしてansible-lint
のようなものを実行してから、AWXサーバーに対してscp
を実行できます。
CIスクリプトを実際に実行するコンポーネントであるGitLab Runnerをセットアップする必要があるため、初回のセットアップはかなり複雑に見えるかもしれません。ユースケースでは、GitLabサーバー/ VMにランナーをインストールするだけです。
ansible-pull
は、ターゲットホスト(cronなどを介して)で実行され、レポの変更をチェックします。レポが更新されている場合は、プレイブックの実行に進みます。
ANSIBLE-PULL(1) System administration commands ANSIBLE-PULL(1)
NAME
ansible-pull - pulls playbooks from a VCS repo and executes them for
the local Host
SYNOPSIS
ansible-pull -U <repository> [options] [<playbook.yml>]
DESCRIPTION
is used to up a remote copy of ansible on each managed node, each set
to run via cron and update playbook source via a source repository.
This inverts the default Push architecture of ansible into a pull
architecture, which has near-limitless scaling potential.
The setup playbook can be tuned to change the cron frequency, logging
locations, and parameters to ansible-pull. This is useful both for
extreme scale-out as well as periodic remediation. Usage of the
'fetch' module to retrieve logs from ansible-pull runs would be an
excellent way to gather and analyze remote logs from ansible-pull.