LoginSignup
1
0

More than 3 years have passed since last update.

vagrant+virtualbox+ansibleで開発者用無料サブスクリプションが登録/自動サブスクライブされたRHELを使用する

Last updated at Posted at 2020-05-29

vagrant+virtualbox環境におけるRHELの利用

問題

RHEL環境における検証を、test-kitchenにてローカルで行う場合、vagrant + virtualboxかdockerの利用が一般的と思える。
RHEL系では、centosが簡易に使用可能だが、RHELと完全に同じとはならない。

vagrantを直に使用する場合にも同様。

RHELを使用する場合、dockerは、RHEL8からはpodmanなどの利用となり、dockerhubにも公式なrhelのイメージは見つけられなかった事から、やや使いにくい。

ソリューション

vagrant + vartualbox 環境においてRHELを使用し、ansibleのredhat_subscriptionモジュールにてサブスクライブを行う。

1. Red Hat Developer program membership に登録する

http://developers.redhat.com/register
にアクセスし、以下を入力してアカウントを作成する。

  • ユーザー名 (Red Hat ログイン ID)
  • メールアドレス
  • 職務内容
  • パスワード

この内、サブスクライブには以下を使用する

  • ユーザー名 (Red Hat ログイン ID)
  • パスワード

2. Vagrantfile (or kitchen.yml) にてRHELを指定する

Redhatのオフィシャルなイメージは無いという理解なので、ここでは以下のboxを使用させていただく

RHEL8系
https://app.vagrantup.com/generic/boxes/rhel8

RHEL7系
https://app.vagrantup.com/generic/boxes/rhel7

kitchen.ymlの例
---
platforms:
- name: rhel8
  driver:
    name: vagrant
    box: generic/rhel8  # <= ここに指定

suites:
- name: dev
  provisioner:
    name: ansible_push
    playbook: site.yml
    chef_bootstrap_url: nil

3. playbookから、ansibleのredhat_subscriptionモジュールを使用し、レジストレーションを行なう

site.yml
- hosts: all
  tasks:

  - name: Register and auto-subscribe to available content
    redhat_subscription:
      state: present
      username: foo  # <= 登録したユーザー名 (Red Hat ログイン ID) 
      password: bar # <= 登録したパスワード
      auto_attach: true
      force_register: true
    register: r
    until: r is succeeded

  - name: メイン処理タスク
...

ここではシンプルにtasks:の先頭で実行しているが、pre_tasks:にて指定しても良いでしょう。
インターネット接続が必要。
初回は数分を要するが、再実行時にはすぐに終了する。
その為、kitchen convergeによる再実行を多用するケースに向いている。
たまに失敗する為、untilを使用。デフォルトでリトライ3回、リトライ間隔5秒。

ユーザー名、パスワードの単純なハードコードを避けるならば、例えば以下の様な対応が可能。

  • ansible vaultを使用する
  • ~/.bash_profileなどから環境変数経由で受け渡す
環境変数経由で受け渡す例
~/.bash_profile

...
export REDHAT_SUBSCRIPTION_USERNAME="foo"
export REDHAT_SUBSCRIPTION_PASSWORD="bar"
...
task
- name: Register and auto-subscribe to available content
  redhat_subscription:
    state: present
    username: "{{ lookup('env', 'REDHAT_SUBSCRIPTION_USERNAME' ) }}"
    password: "{{ lookup('env', 'REDHAT_SUBSCRIPTION_PASSWORD' ) }}"
    auto_attach: true
    register: r
    until: r is succeeded

サブスクライブしたシステムの削除

CI/CDのテストで作成、廃棄を繰り返していると新たにサブスクライブできなくなる
その場合、以下などからログインして、廃棄してもう使用しないシステムを削除する事で対応できる

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0