<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Ansible on LIFELOG</title>
    <link>/tags/ansible/</link>
    <description>Recent content in Ansible on LIFELOG</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>ja</language>
    <copyright>© 2026 0222-nnn</copyright>
    <lastBuildDate>Sat, 05 Sep 2026 00:00:04 +0900</lastBuildDate><atom:link href="/tags/ansible/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title>terraform applyが成功してもVMの中は設定されていなかった話</title>
      <link>/blog/20260905_terraform_gcp_advanced_terraform_ansible_boundary/</link>
      <pubDate>Sat, 05 Sep 2026 00:00:04 +0900</pubDate>
      
      <guid>/blog/20260905_terraform_gcp_advanced_terraform_ansible_boundary/</guid>
      <description>&lt;h2 class=&#34;relative group&#34;&gt;概要 
    &lt;div id=&#34;概要&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100&#34;&gt;
        &lt;a class=&#34;group-hover:text-primary-300 dark:group-hover:text-neutral-700&#34;
            style=&#34;text-decoration-line: none !important;&#34; href=&#34;#%e6%a6%82%e8%a6%81&#34; aria-label=&#34;アンカー&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;        
    
&lt;/h2&gt;
&lt;p&gt;「Terraformはマシンを作る、中で動くものはAnsible」という分担はよく聞きます。ところがその受け渡しは自動では繋がりません。&lt;/p&gt;
&lt;p&gt;実際に、&lt;code&gt;terraform apply&lt;/code&gt;が&lt;code&gt;35 added&lt;/code&gt;と出た一方で、VMの中ではAnsibleが失敗していました。&lt;code&gt;terraform plan&lt;/code&gt;も差分なしのままです。Terraformから見ると、この失敗はどこにも現れません。&lt;/p&gt;
&lt;p&gt;GCEにOps AgentとNginxを入れる最小構成で、この境界を実測します。&lt;/p&gt;
&lt;p&gt;対象読者は、TerraformでGCEを作ったことがあり、Ansibleを書いたことがある人です。それぞれの入門は扱いません。&lt;/p&gt;
&lt;p&gt;Ansible制御ノードからのpush型実行、Ansible Vaultは扱いません。今回はVM上でのlocal実行です。&lt;/p&gt;

&lt;h2 class=&#34;relative group&#34;&gt;検証すること 
    &lt;div id=&#34;検証すること&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100&#34;&gt;
        &lt;a class=&#34;group-hover:text-primary-300 dark:group-hover:text-neutral-700&#34;
            style=&#34;text-decoration-line: none !important;&#34; href=&#34;#%e6%a4%9c%e8%a8%bc%e3%81%99%e3%82%8b%e3%81%93%e3%81%a8&#34; aria-label=&#34;アンカー&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;        
    
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;startup scriptはいつ走るのか&lt;/strong&gt;（初回だけか、毎回か）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Terraformの「成功」は中身を保証するか&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;playbookを更新したとき、既存のVMにどう反映するか&lt;/li&gt;
&lt;li&gt;サービスが「正しく」動いているとどう確認するか&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 class=&#34;relative group&#34;&gt;前提環境 
    &lt;div id=&#34;前提環境&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100&#34;&gt;
        &lt;a class=&#34;group-hover:text-primary-300 dark:group-hover:text-neutral-700&#34;
            style=&#34;text-decoration-line: none !important;&#34; href=&#34;#%e5%89%8d%e6%8f%90%e7%92%b0%e5%a2%83&#34; aria-label=&#34;アンカー&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;        
    
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Google Cloud CLI、Terraform&lt;/li&gt;
&lt;li&gt;Billingが有効な検証用Google Cloud Project&lt;/li&gt;
&lt;li&gt;GCE、GCS、IAPを操作できるGoogleアカウント&lt;/li&gt;
&lt;li&gt;VM内で&lt;code&gt;sudo&lt;/code&gt;を実行できること。掲載した手動再実行やログ確認に要る。&lt;code&gt;roles/compute.osLogin&lt;/code&gt;だけでは足りず、&lt;code&gt;roles/compute.osAdminLogin&lt;/code&gt;が要る&lt;/li&gt;
&lt;li&gt;検証時のバージョン：Terraform 1.14.5、google 7.46.0、Debian 12、nginx 1.22、Ansible 2.14（Debian 12 の &lt;code&gt;apt&lt;/code&gt; が入れる版）、Ops Agent 2.x&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ansible と Ops Agent の細かい版は記録していません。挙動が変わりうるので、再現するなら &lt;code&gt;ansible --version&lt;/code&gt; と &lt;code&gt;google_cloud_ops_agent_engine --version&lt;/code&gt; を控えておきます。&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>よく使うansibleコマンドまとめ（ad-hocからplaybook・Vaultまで）</title>
      <link>/blog/2026_09_03_frequently_used_ansible_commands/</link>
      <pubDate>Thu, 03 Sep 2026 00:00:00 +0900</pubDate>
      
      <guid>/blog/2026_09_03_frequently_used_ansible_commands/</guid>
      <description>&lt;h2 class=&#34;relative group&#34;&gt;概要 
    &lt;div id=&#34;概要&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100&#34;&gt;
        &lt;a class=&#34;group-hover:text-primary-300 dark:group-hover:text-neutral-700&#34;
            style=&#34;text-decoration-line: none !important;&#34; href=&#34;#%e6%a6%82%e8%a6%81&#34; aria-label=&#34;アンカー&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;        
    
&lt;/h2&gt;
&lt;p&gt;Ansibleは、たまにしか触らない期間があると「あのオプション、どう書くんだっけ」となりがちです。特に&lt;code&gt;--check&lt;/code&gt;と&lt;code&gt;--diff&lt;/code&gt;の組み合わせ、&lt;code&gt;--tags&lt;/code&gt;や&lt;code&gt;--limit&lt;/code&gt;での絞り込み、&lt;code&gt;ansible-vault&lt;/code&gt;の各サブコマンドは、そのたびに調べ直すことになります。手が止まる時間をなくしたいので、実際に使うコマンドを出力つきでまとめておきます。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;/blog/2026_09_03_frequently_used_git_and_gh_commands/&#34;&gt;よく使うgit・ghコマンドまとめ&lt;/a&gt;と同じ趣旨です。忘れたときにこのページを見れば済むようにします。&lt;/p&gt;
&lt;p&gt;対象読者は、Ansibleのplaybookを書いたことがあり、&lt;code&gt;hosts&lt;/code&gt;や&lt;code&gt;tasks&lt;/code&gt;の構造は分かる人です。Ansibleそのものの入門は扱いません。&lt;/p&gt;
&lt;p&gt;各モジュールの詳細なパラメータ（公式ドキュメントを参照する前提）は扱いません。AWX / Ansible Automation Platform、Terraformとの連携も扱わず、コマンドの使い方に絞ります。&lt;/p&gt;

&lt;h2 class=&#34;relative group&#34;&gt;検証環境 
    &lt;div id=&#34;検証環境&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100&#34;&gt;
        &lt;a class=&#34;group-hover:text-primary-300 dark:group-hover:text-neutral-700&#34;
            style=&#34;text-decoration-line: none !important;&#34; href=&#34;#%e6%a4%9c%e8%a8%bc%e7%92%b0%e5%a2%83&#34; aria-label=&#34;アンカー&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;        
    
&lt;/h2&gt;
&lt;p&gt;出力例はすべて、Dockerで組んだ検証環境で実際に実行した結果です。手元のOSを汚さず、壊しても&lt;code&gt;docker compose down&lt;/code&gt;で作り直せます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ansible core 2.18.1（コントロールノード）&lt;/li&gt;
&lt;li&gt;操作対象ノード3台（&lt;code&gt;web1&lt;/code&gt;、&lt;code&gt;web2&lt;/code&gt;、&lt;code&gt;db1&lt;/code&gt;。いずれもDebian 12 + sshd）&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 class=&#34;relative group&#34;&gt;検証環境の作り方 
    &lt;div id=&#34;検証環境の作り方&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100&#34;&gt;
        &lt;a class=&#34;group-hover:text-primary-300 dark:group-hover:text-neutral-700&#34;
            style=&#34;text-decoration-line: none !important;&#34; href=&#34;#%e6%a4%9c%e8%a8%bc%e7%92%b0%e5%a2%83%e3%81%ae%e4%bd%9c%e3%82%8a%e6%96%b9&#34; aria-label=&#34;アンカー&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;        
    
&lt;/h3&gt;
&lt;p&gt;コントロールノード（ansibleを実行する側）のイメージです。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-dockerfile&#34; data-lang=&#34;dockerfile&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# Dockerfile&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;FROM&lt;/span&gt;&lt;span class=&#34;s&#34;&gt; python:3.12-slim&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;RUN&lt;/span&gt; apt-get update &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; apt-get install -y --no-install-recommends &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;        openssh-client &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;        sshpass &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; rm -rf /var/lib/apt/lists/*&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;RUN&lt;/span&gt; pip install --no-cache-dir ansible-core&lt;span class=&#34;o&#34;&gt;==&lt;/span&gt;2.18.1&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;WORKDIR&lt;/span&gt;&lt;span class=&#34;s&#34;&gt; /work&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;操作対象ノード（Ansibleがsshで接続する側）のイメージです。&lt;/p&gt;</description>
      
    </item>
    
  </channel>
</rss>
