てくなべ (tekunabe)

ansible / network automation / 学習メモ

[Ansible/Terraform] Terraform 入りの Execution Environment (EE) をビルドする定義ファイル例

はじめに

Ansible を Execution Environment (EE: コンテナベースの Ansible 実行環境)を利用していて、Ansible から EE の中の Terraform を呼び出す場合、EE の中に Terraform をインストールしておく必要があります。

AWX の標準の EE である quay.io/ansible/awx-ee には Terraform はライセンスの都合上入りません。ansible-automation-platform-24/ee-supported-rhel9 のよな AAP の EE にも入らないはずです

そのため、Terraform が必要な場合は、別途ビルド必要があります。

Terraform 入り EE を ビルドする際に参考になる execution-environment.yml を見つけましたのでご紹介します。

execution-environment.yml

以下のファイルです。

github.com

なお、このリポジトリの URL は、AAP 2.5 のドキュメントにも掲載される予定のようです(予想ですが、関連 PR)。

おためし

少しだけアレンジしたファイルでビルドしてみます。

環境は ansible-builder 3.0.1 です。

---
version: 3

images:
  base_image:
    name: quay.io/centos/centos:stream9

dependencies:
  ansible_core:
    package_pip: ansible-core
  ansible_runner:
    package_pip: ansible-runner
  galaxy:
    collections:
      - name: cloud.terraform     # 例では ファイル名指定ですが、ここでは直接指定。このコレクションが Terraform を利用する

additional_build_steps:
  append_base: |
    RUN yum install -y git
    RUN curl https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo | tee /etc/yum.repos.d/terraform.repo
    RUN yum install -y terraform
$ ansible-builder build -t localhost/terraform-ee -v 3
...(略)...
#11 [base 7/8] RUN curl https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo | tee /etc/yum.repos.d/terraform.repo
#11 1.667   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
#11 1.667                                  Dload  Upload   Total   Spent    Left  Speed
100   381  100   381    0     0    385      0 --:--:-- --:--:-- --:--:--   384
#11 2.656 [hashicorp]
#11 2.656 name=Hashicorp Stable - $basearch
#11 2.656 baseurl=https://rpm.releases.hashicorp.com/RHEL/$releasever/$basearch/stable
#11 2.656 enabled=1
#11 2.656 gpgcheck=1
#11 2.656 gpgkey=https://rpm.releases.hashicorp.com/gpg
#11 2.656 
#11 2.656 [hashicorp-test]
#11 2.656 name=Hashicorp Test - $basearch
#11 2.656 baseurl=https://rpm.releases.hashicorp.com/RHEL/$releasever/$basearch/test
#11 2.656 enabled=0
#11 2.656 gpgcheck=1
#11 2.656 gpgkey=https://rpm.releases.hashicorp.com/gpg
#11 DONE 2.7s

#12 [base 8/8] RUN yum install -y terraform
#12 2.212 Hashicorp Stable - x86_64                       927 kB/s | 1.4 MB     00:01    
#12 2.431 Last metadata expiration check: 0:00:01 ago on Mon May 13 05:05:58 2024.
#12 2.809 Dependencies resolved.
#12 2.809 ================================================================================
#12 2.809  Package            Architecture    Version            Repository          Size
#12 2.809 ================================================================================
#12 2.809 Installing:
#12 2.809  terraform          x86_64          1.8.3-1            hashicorp           26 M
#12 2.809 
#12 2.809 Transaction Summary
#12 2.809 ================================================================================
#12 2.809 Install  1 Package
#12 2.809 
#12 2.810 Total download size: 26 M
#12 2.810 Installed size: 84 M
#12 2.810 Downloading Packages:
#12 5.056 terraform-1.8.3-1.x86_64.rpm                     12 MB/s |  26 MB     00:02    
#12 5.058 --------------------------------------------------------------------------------
#12 5.059 Total                                            12 MB/s |  26 MB     00:02     
#12 5.130 Hashicorp Stable - x86_64                        96 kB/s | 3.9 kB     00:00    
#12 5.170 Importing GPG key 0xA621E701:
#12 5.170  Userid     : "HashiCorp Security (HashiCorp Package Signing) <security+packaging@hashicorp.com>"
#12 5.170  Fingerprint: 798A EC65 4E5C 1542 8C8E 42EE AA16 FCBC A621 E701
#12 5.170  From       : https://rpm.releases.hashicorp.com/gpg
#12 5.302 Key imported successfully
#12 5.332 Running transaction check
#12 5.333 Transaction check succeeded.
#12 5.333 Running transaction test
#12 5.361 Transaction test succeeded.
#12 5.361 Running transaction
#12 5.411   Preparing        :                                                        1/1 
#12 5.922   Installing       : terraform-1.8.3-1.x86_64                               1/1 
#12 8.086   Verifying        : terraform-1.8.3-1.x86_64                               1/1 
#12 8.119 
#12 8.119 Installed:
#12 8.119   terraform-1.8.3-1.x86_64                                                      
#12 8.119 
#12 8.119 Complete!
#12 DONE 8.2s
...(略)...
#32 naming to localhost/terraform-ee 0.0s done
#32 DONE 1.7s

Complete! The build context can be found at: /home/sakana/ee3/context

ビルドできたので、試しのバージョンを表示させてみます。

$ docker run -it localhost/terraform-ee terraform --version
Terraform v1.8.3
on linux_amd64

無事にインストールできたようです。

これでこの EE で cloud.terraformコレクションが利用できるようになったはずです。