Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
AWXのプロジェクトを自動同期させたい / Automatic AWX project synchronization
ののし
June 23, 2020
Technology
1
1.4k
AWXのプロジェクトを自動同期させたい / Automatic AWX project synchronization
ののし
June 23, 2020
Tweet
Share
More Decks by ののし
See All by ののし
Operator を導入してみよう ~MinIO Operator 編~ / Let's install Operator ~MinIO Operator~
nnstt1
0
430
Cephadm を使った Ceph クラスタ構築 / Build a Ceph cluster with Cephadm
nnstt1
2
1.8k
ExternalDNS を試してみた / Tried ExternalDNS
nnstt1
1
360
Other Decks in Technology
See All in Technology
RDRA + JavaによるレジャーSaaSプロダクトの要件定義と実装のシームレスな接続
jjebejj
PRO
3
520
JAWS-UG re:Habilitaion 報告 / JAWS-UG OITA rehabilitation
hiranofumio
0
120
miisan's career talk
mii3king
0
220
SI企業が「アジャイル推し」になったら 幸せになれますか?/Can SI company be happy if it becomes “Agile stan” ?
chinmo
1
1.1k
Scrum Fest Osaka 2022 フルリモート下でのチームビルディング
moritamasami
2
1.1k
雑な攻撃からELBを守る一工夫 +おまけ / Know-how to protect servers from miscellaneous attacks
hiroga
0
480
The role of the data organization as a business progresses
line_developers
PRO
3
840
要約 "Add Live Text interaction to your app"
ushisantoasobu
0
140
ノーメンテナンス運用実現のためのノウハウ/ColoplTech-05-02
colopl
0
160
Data in Google I/O - IO Extended GDG Seoul
kennethanceyer
0
150
Custom GitHub Actions by Java
kazamori
0
280
The Fractal Geometry of Software Design
vladikk
0
430
Featured
See All Featured
The Illustrated Children's Guide to Kubernetes
chrisshort
15
36k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
7
1.1k
Unsuck your backbone
ammeep
659
55k
Building Applications with DynamoDB
mza
83
4.7k
Building an army of robots
kneath
299
40k
GraphQLの誤解/rethinking-graphql
sonatard
27
6.5k
It's Worth the Effort
3n
172
25k
Done Done
chrislema
174
14k
Fantastic passwords and where to find them - at NoRuKo
philnash
27
1.5k
YesSQL, Process and Tooling at Scale
rocio
157
12k
jQuery: Nuts, Bolts and Bling
dougneiner
56
6.4k
Raft: Consensus for Rubyists
vanstee
126
5.4k
Transcript
AWXのプロジェクトを自動同期させたい 2020.06.23 @nnstt1 Ansible Night Tokyo 2020
自己紹介 --- - name : ののし - twitter : @nnstt1
- job : previous : SIer(アプリ寄り) current : 社内インフラ(主に Windows Server) - relationship_with_ansible : - 2019.8 Ansible と出会う - 社内で Ansible 推進 - Ansible ユーザー会 への物理参加が目標 - win_updates が好き Ansible Night Tokyo 2020 #ansiblejp 2
AWXを使っていて こんなことを思ったことは ありませんか?
とある 新規Playbook の追加で… Ansible Night Tokyo 2020 #ansiblejp 4 git
push 新しく作った ぼくのかんがえたさいきょうの Playbook を Job Template で使おう YAML YAML saikyo-playbook.yml
出てこない!
プロジェクトの同期が必要だった Ansible Night Tokyo 2020 #ansiblejp 6 < Playbook追加の度にボタン押すの(‘A` )マンドクセ
1. git push 2. Job Template で Playbook 選択 3.
Job Template 起動 理想の姿 7 Ansible Night Tokyo 2020 #ansiblejp 新Playbookを作ったら… この時点でプロジェクトは 同期済みであってほしい
検討した方法 8 Ansible Night Tokyo 2020 #ansiblejp • プロジェクト同期用 JT
を Webhook で起動 • AWX の API でプロジェクト同期ジョブを起動
Webhook
JT は Webhook 経由で起動可能 Ansible Night Tokyo 2020 #ansiblejp 10
• Webhook で直接プロジェクト同期させることは不可能 • 同期用JT を用意 - 同期させたいプロジェクトを選択 - Playbook の中身は空っぽ(debug など)
JT 実行時にプロジェクトを更新 Ansible Night Tokyo 2020 #ansiblejp 11
GitLab から Webhook でリクエスト送信 Ansible Night Tokyo 2020 #ansiblejp 12
Project Webhookで JT 実行 git push YAML YAML YAML Playbook 同期 Repository 同期用 JT (中身 空っぽ) SCM Update 1. GitLab から Webhook 送信して 同期用 JT を実行 2. 同期用JT で使用するプロジェクトが更新される 3. 新Playbook が同期される
Webhook でプロジェクトの同期可能 Ansible Night Tokyo 2020 #ansiblejp 13 ジョブ履歴 JT
作成 Webhook で実行されている! プロジェクトが同期された! 新 Playbook を選択できる!
API
AWX は API が提供されている Ansible Night Tokyo 2020 #ansiblejp 15
http://<awx-server>/api/ でブラウザから見れます /api/v2/projects/<project-id>/update/ POST すればプロジェクトが同期される
.gitlab-ci.yml Ansible Night Tokyo 2020 #ansiblejp 16 image: docker:latest ...(略)...
molecule: stage: test script: - molecule test awx: stage: sync script: - 'curl -X POST -H "Authorization: Bearer $AWX_TOKEN" -H "Content-Type: application/json“ http://<awx-server>/api/v2/projects/<project-id>/update/’ only: - master 事前に AWX のトークンを取得して GitLab に登録が必要 curl -s -u <user>:<password> -X POST http://<awx-server>/api/v2/tokens/ | jq -r .token Molecule クリア & master ブランチ の場合のみ API 実行 Molecule 用
GitLab CI で API を叩く Ansible Night Tokyo 2020 #ansiblejp
17 Project CI curl Playbook 同期 git push YAML Repository YAML YAML SCM Update 1. GitLab CI で Runner 起動 2. Runner 内で プロジェクト更新 API 実行 3. 新Playbook が同期される
まとめ 18 Ansible Night Tokyo 2020 #ansiblejp プロジェクト自動同期は可能 Webhook と
API の 2通り確認できた 職場では API を採用 AWX は API が豊富 AWX は多くの API が提供されているので他にも活かせそう awx コマンドでも可能 某金魚さんブログにて awx コマンドでの同期を紹介