はじめに
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
例
以下のファイルです。
なお、このリポジトリの 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
コレクションが利用できるようになったはずです。