SlideShare uma empresa Scribd logo
1 de 14
既存サーバを後からAnsible
で構成管理する
自動化大好きエンジニアLT会 第6回
■今日のポイント
既に手動等で構築しているサーバを新たに
Ansibleの構成管理に加える場合について、どの
様に対応しているかを紹介致します。
Ansibleを使って1から構築する場合とは違った
観点が必要です。
■自己紹介
 [名前]: 上畑圭史(うえはたけいじ)
 [Twitter]: いじけまん(@ijikeman)
 [職業]:株式会社ラクスのインフラエンジニア
 [趣味1]: 自作キーボード大好き
アクリル板(4mm)にキーの穴(60個)を手であけた
自キー(自作キーボード)界隈ではちょっとした有名人
 [趣味2]: ピアノ歴5ヵ月(コロナを契機に) …
 [趣味3]: 野菜作り
 [趣味4]: 自動化大好きエンジニアLT会登壇(第1~6回) 皆勤継続
3
■1. 既存環境へのDry run
--check option
基本的なことですが、ansibleのコードを作成した後は必ず本番環
境に対してDry run[--check]を実行し差分を確認します。
その際、テンプレートやファイルに関しては差分を表示する為、
“--diff”オプションを付けて差分情報を表示しましょう。
Dry runモードでチェックで
きないケース
Command系のモジュールはDry runモードでは処理をスキップします。
以下例では
shellで確認するバージョンチェック処理がスキップされる為、“register:
app_version”が未定義となります。
次の、アプリのインストールでAnsibleエラーとなり処理がストップします。
その為、Dry runモードではスキップさせるよう
“when: not ansible_check_mode”を実装しています。
■Command系は実行されない
Skipされて未定義
Dry runでも実行エラー
実行エラーの回避
■Command系は実行されない
skipされ未定義
Dry runでも実行エラー
“when: not ansible_check_mode”を実装せずに実行した場合
解決策: check_mode: no
■Command系は実行されない
Dry runでも実行
このオプションはDry runモードであっても実行する為、when:
でエラーにならず実行することができます。
この様にDry runモードを使ってあらかじめ既
存環境に対する影響を確認できますので、活用
をお勧めします。
■2. ファイルバックアップ
次にfile等を置き換える場合です。
既存環境に対してファイルの操作を実施する場合には、
“backup: yes”
を追加してバックアップを実施しています。
また、バックアップファイルは
“[FILENAME].PID.YYYY-MM-DD@HH:mm:ss~”
となりカスタマイズはできない様です。
□backupが実装されているモジュール
• assemble
• blockinfile
• copy
• cron
• get_url
• lineinfile
• replace
• template
■2. ファイルバックアップ
■3. 部分適用
構成情報を全て実装してから適用すると影響範囲が広くなる為、適
用範囲を絞り徐々に範囲を広げています。
メリット 説明
レビュー者の負担軽減 コード、テスト結果
量が増える事でレビュー品質が下がる
※逆に回数は増える為、範囲設定は要調整
適用時のトラブル影響範囲
を限定
予想外の事態に備え、リカバリ時は範囲が狭い
方がよい
Dry run等テストコストの
低減
コード修正の度にテストを実施する為、テスト
コストを下げる
■3. 部分適用(その他)
1. ファイル等の改変は軽微だがnotifyでサービス再起動が走ってし
まう。(例えばコメント行だけ追加や無駄な改行削除など)
→ handlersにwhen:で条件分岐を一時的記載して再起動を回避
2. tags, skip-tagsを使用し、該当部分のみ処理を行う。
→ 対象台数が増えれば増えるほど全てのAnsibleコードを実行する
と時間がかかる等。
※ただし、部分適用はあくまでも臨時措置であり常用すべきではな
い。
全Ansibleコードを実行して、冪等性の担保に努めることが基本。
おわり。

Mais conteúdo relacionado

Mais procurados

バックアップとリストアの基礎
バックアップとリストアの基礎バックアップとリストアの基礎
バックアップとリストアの基礎
Kazuki Takai
 

Mais procurados (20)

Ansibleの実行速度を1/3にした話
Ansibleの実行速度を1/3にした話Ansibleの実行速度を1/3にした話
Ansibleの実行速度を1/3にした話
 
Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門
 
ストリーミングのげんざい
ストリーミングのげんざいストリーミングのげんざい
ストリーミングのげんざい
 
CyberAgentのインフラについて メディア事業編 #catechchallenge
CyberAgentのインフラについて メディア事業編 #catechchallengeCyberAgentのインフラについて メディア事業編 #catechchallenge
CyberAgentのインフラについて メディア事業編 #catechchallenge
 
なぜディスクレスハイパーバイザに至ったのか / Why did we select to the diskless hypervisor? #builde...
なぜディスクレスハイパーバイザに至ったのか / Why did we select to the diskless hypervisor? #builde...なぜディスクレスハイパーバイザに至ったのか / Why did we select to the diskless hypervisor? #builde...
なぜディスクレスハイパーバイザに至ったのか / Why did we select to the diskless hypervisor? #builde...
 
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
 
できる!KickstartとAnsible!
できる!KickstartとAnsible!できる!KickstartとAnsible!
できる!KickstartとAnsible!
 
OpenStack構築手順書 Kilo版
OpenStack構築手順書 Kilo版OpenStack構築手順書 Kilo版
OpenStack構築手順書 Kilo版
 
バックアップとリストアの基礎
バックアップとリストアの基礎バックアップとリストアの基礎
バックアップとリストアの基礎
 
単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介
 
PostreSQL監査
PostreSQL監査PostreSQL監査
PostreSQL監査
 
WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介
 
Ansibleはじめよぉ -Infrastructure as Codeを理解-
Ansibleはじめよぉ -Infrastructure as Codeを理解-Ansibleはじめよぉ -Infrastructure as Codeを理解-
Ansibleはじめよぉ -Infrastructure as Codeを理解-
 
Snipe itで始めるit資産管理
Snipe itで始めるit資産管理Snipe itで始めるit資産管理
Snipe itで始めるit資産管理
 
Job schedulerを活用したoperations as codeの世界
Job schedulerを活用したoperations as codeの世界Job schedulerを活用したoperations as codeの世界
Job schedulerを活用したoperations as codeの世界
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
 
#logstudy 01 rsyslog入門
#logstudy 01 rsyslog入門#logstudy 01 rsyslog入門
#logstudy 01 rsyslog入門
 
Snowflake on AWSのターゲットエンドポイントとしての利用
Snowflake on AWSのターゲットエンドポイントとしての利用Snowflake on AWSのターゲットエンドポイントとしての利用
Snowflake on AWSのターゲットエンドポイントとしての利用
 
Spanner から GKE、Spinnaker、そして SRE まで、コロプラが今挑戦していること[Google Cloud INSIDE Games ...
Spanner から GKE、Spinnaker、そして SRE まで、コロプラが今挑戦していること[Google Cloud INSIDE Games ...Spanner から GKE、Spinnaker、そして SRE まで、コロプラが今挑戦していること[Google Cloud INSIDE Games ...
Spanner から GKE、Spinnaker、そして SRE まで、コロプラが今挑戦していること[Google Cloud INSIDE Games ...
 
Zabbix最新情報 ~Zabbix 6.0に向けて~ @OSC2021 Online/Fall
Zabbix最新情報 ~Zabbix 6.0に向けて~ @OSC2021 Online/FallZabbix最新情報 ~Zabbix 6.0に向けて~ @OSC2021 Online/Fall
Zabbix最新情報 ~Zabbix 6.0に向けて~ @OSC2021 Online/Fall
 

Mais de KeijiUehata1 (6)

20221102_automation_lt09.pptx
20221102_automation_lt09.pptx20221102_automation_lt09.pptx
20221102_automation_lt09.pptx
 
20221102_automation_lt09.pptx
20221102_automation_lt09.pptx20221102_automation_lt09.pptx
20221102_automation_lt09.pptx
 
Kubernetes サーバレス知識ゼロのエンジニアがKnative環境構築してみた
Kubernetes サーバレス知識ゼロのエンジニアがKnative環境構築してみたKubernetes サーバレス知識ゼロのエンジニアがKnative環境構築してみた
Kubernetes サーバレス知識ゼロのエンジニアがKnative環境構築してみた
 
Python製BDDツールで自動化してみた
Python製BDDツールで自動化してみたPython製BDDツールで自動化してみた
Python製BDDツールで自動化してみた
 
ラクス共通Ansibleコードテンプレートを作った話
ラクス共通Ansibleコードテンプレートを作った話ラクス共通Ansibleコードテンプレートを作った話
ラクス共通Ansibleコードテンプレートを作った話
 
Ansible specでテストをする話
Ansible specでテストをする話Ansible specでテストをする話
Ansible specでテストをする話
 

既存サーバを後からAnsibleで構成管理する