chouseknecht.cluster-up-role
cluster-up-role
OpenShiftクライアントをインストールし、oc cluster up
を使ってローカルインスタンスを作成します。
これは、Ansible Containerのデモとテストのニーズを支援するために作成され、OpenShiftのインストールと設定ガイドのタスクを自動化します。
具体的には、以下のタスクを実行します:
- ocクライアントをダウンロードしてインストール
- OSXで実行している場合、
socat
をインストール - あなたのパブリックIPに関連付けられたホスト名を/etc/hostsに追加
- クラスターを起動
- developerアカウントにクラスター管理者の権限を付与
- ローカルレジストリを公開するためのルートを作成
- 永続ボリュームを作成
oc
クライアントを使って、developerとしてクラスターにログインし、プロジェクトをdefaultに設定
対応プラットフォームとテスト
これまで、このロールは主にDocker for Macを使用してOSX上でテストされてきました。また、TravisというUbuntuプラットフォームでもほぼ動作します。したがって、もしOSX以外で使用しようとする場合、バグが見つかる可能性が高いです。もし見つけた場合は、必ず問題を開くか、プルリクエストを提出してください。ロールを最新の状態に保つためです。
ホスト名
デフォルトでは、ホスト名local.openshift
があなたの*/etc/hostsファイルに追加され、現在のIPアドレスに関連付けられます。別の名前を希望する場合は、openshift_hostname*パラメータを使用してください。
クラスターが作成されると、あなたのローカルネットワークIPアドレスに関連付けられます。ノートパソコンや他のモバイルデバイスで作業している場合、新しいネットワークに移動するたびにクラスターを再作成する必要があることがあります。実際のIPアドレスに関連付けられたホスト名を作成すると、手間が少し軽減されます。
セキュリティなしのレジストリ
Dockerにセキュリティなしのレジストリオプションを追加していない場合、最初に実行するときにエラーが発生します。追加する必要があるサブネットに関するメッセージが表示されます。また、openshift_hostnameの値を追加する必要があります。デフォルトではこの値はlocal.openshiftです。変更を加えた後、Dockerを再起動し、再度ロールを実行すると、全てが正常に進行します。
前提条件
以下がインストールされている必要があります:
- Docker EngineまたはDocker for Mac
- sudoアクセス、*/etc/hostsを更新し、
oc
バイナリを/usr/local/bin*にインストールするため。
注意:Linuxプラットフォームを使用している場合は、docker
コマンドを直接使用できるように、dockerグループを作成する手順に従ってください。
サンプルプレイブック
ロールを実行する際は、gather_factsを真(truthy)な値に設定してください。事実がないと、ロールはホストのIPアドレスやOSファミリーを判断できません。
以下に、すべてのデフォルトパラメータを含むサンプルプレイブックを示します。この正確な例はfiles/cluster-up.ymlにあります。コピーして、環境に合わせて調整してください。
---
- hosts: localhost
remote_user: root
connection: local
gather_facts: yes
roles:
- role: chouseknecht.cluster-up-role
openshift_github_user: openshift
openshift_github_name: origin
openshift_github_url: https://api.github.com/repos
openshift_release_tag_name: ""
openshift_client_dest: /usr/local/bin
openshift_force_client_install: yes
openshift_volume_name: project-data
openshift_volume_path: "{{ lookup('env','HOME') }}/volumes/project/data"
openshift_hostname: local.openshift
openshift_recreate: yes
ロールをインストールした後、file/cluster-up.ymlをプロジェクトディレクトリにコピーし、--ask-sudo-pass
オプションを付けて実行します。以下はその例です:
# ロールをインストール
$ ansible-galaxy install chouseknecht.cluster-up-role
# ロールのパスからプレイブックを現在の作業ディレクトリにコピー
$ cp ${ANSIBLE_ROLES_PATH}/chouseknecht.cluster-up-role/files/cluster-up.yml .
# localhostインベントリファイルを作成
$ echo "localhost">./inventory
# プレイブックを実行
$ ansible-playbook -i inventory --ask-sudo-pass cluster-up.yml
Ansible Containerプロジェクトのデプロイ
次の例では、新しいプロジェクトを作成し、Container Enabledロールjenkins-containerをインストールし、JenkinsサービスをローカルのOpenShiftクラスターにデプロイします。
注意:この例を実行するには、Ansible Container 0.3.0をインストールする必要があります。支援が必要な場合は、ソースからのインストールをご覧ください。
# 新しいプロジェクトフォルダを作成
$ mkdir jenkins
# 作業ディレクトリを設定
$ cd jenkins
# プロジェクトを初期化
$ ansible-container init
# jenkins-containerロールをインストール
$ ansible-container install awasilyev.jenkins-container
# 画像を構築
$ ansible-container build
# デプロイメントプレイブックとロールを生成
$ ansible-container shipit openshift --local-images
# 作業ディレクトリをansibleに設定
$ cd ansible
# shipitプレイブックを実行
$ ansible-playbook shipit-openshift.yml
上記により、OpenShift上に新しいプロジェクトjenkins
が作成されました。このプロジェクトを表示するには、https://local.openshift:8443/consoleを開いてOpenShiftコンソールにログインします。ユーザー名はdeveloper
、パスワードはdeveloper
です。jenkins
をクリックしてプロジェクトの概要を表示します。
以下の画像をクリックすると、Jenkinsサービスデプロイのビデオを見ることができます:
ロール変数
以下の変数を使用してロールの動作を変更できます:
openshift_github_user: openshift
ocクライアントのダウンロード先が見つかるGitHubリポの所有者
openshift_github_name: origin
GitHubリポの名前
openshift_github_url: https://api.github.com/repos
使用するGitHub APIのエンドポイント。
openshift_release_tag_name: ""
希望するリリースの
oc
バイナリのタグ。指定しない場合、最新のリリースがインストールされます。
openshift_client_dest: /usr/local/bin
oc
がインストールされるディレクトリ。PATH内の何かである必要があります。
openshift_force_client_install: yes
oc
バイナリがすでに存在する場合、上書きしますか?
openshift_volume_name: project-data
ボリュームの名前。
openshift_volume_path: "{{ lookup('env','HOME') }}/volumes/project/data"
新しいボリュームのために割り当てられるローカルパス。
openshift_hostname: local.openshift
イメージをプッシュする準備ができたときにローカルレジストリを参照するために使用するホスト名。
openshift_recreate: yes
クラスターがすでに実行中の場合、クラスターを停止して再作成しますか?
openshift_up_options: ''
oc cluster up
に渡したいオプションを追加。複数のオプションはスペースで区切ります。コマンドラインと同様です。
依存関係
なし
ライセンス
Apache v2
著者
Install the latest oc client and create a local OpenShift cluster using `oc cluster up`.
ansible-galaxy install chouseknecht.cluster-up-role