ステップ 4 |
(任意)ロールおよびプロファイルを作成します。
(注) |
init.pp によって提供されるものの外側でインストール、インスタンス化および設定が必要な場合は、この手順を実行します。 また、ノードに複数のアプリケーションがインストールされている場合は、ロールとプロファイルが必要です。 クラスを直接呼び出すことによってアプリケーションをインストールおよび設定できる場合は、ロールとプロファイルを作成しないでください。 |
-
ディレクトリ /etc/puppet/modules/root-profile/manifests 下でアプリケーション用の profile.pp ファイルを作成します。このディレクトリでは、ユーザ固有のパラメータが Puppet Master 上のモジュールのクラスに渡されます。
[root@puma-qe-pupm ~]# cd /etc/puppet/modules/root-profile/manifests/
[root@puma-qe-pupm manifests]#
[root@puma-qe-pupm manifests]# cat profiledocker.pp
class root-profile::profiledocker (
$proxy = undef,
$no_proxy = undef,
$username = "root",
$hostname = "localhost.localdomain",
$dns1 = "8.8.8.8",
$dns2 = "8.8.4.4") {
anchor {'root-profile::profiledocker::begin':} ->
class { 'docker':
proxy => $proxy,
no_proxy => $no_proxy,
} ->
docker::image {'centos':} ->
docker::run { 'dockertest':
image => 'centos',
command => '/bin/sh -c "while true; do echo Docker Test; sleep 1; done"',
ports => ['4444', '4555'],
expose => ['4666', '4777'],
use_name => true,
volumes => '/var/log',
memory_limit => 10m,
username => $username,
hostname => $hostname,
dns => [$dns1,$dns2],
restart_service => true,
privileged => false,
} ->
anchor {'root-profile::profiledocker::end':}
}
[root@puma-qe-pupm manifests]#
-
role.pp ファイルを /etc/puppet/modules/root-role/manifests 下に作成し、プロファイルにパラメータを渡します。
[root@puma-qe-pupm modules]# cd /etc/puppet/modules/root-role/manifests/
[root@puma-qe-pupm manifests]# cat roledocker.pp
class root-role::roledocker (
$my_proxy = undef,
$my_no_proxy = undef,
$username = "root",
$hostname = "localhost.localdomain",
$dns1 = "8.8.8.8",
$dns2 = "8.8.4.4") {
if $my_proxy == "null" {
$proxy = undef
}
else {
$proxy = $my_proxy
}
if $my_no_proxy == "null" {
$no_proxy = undef
}
else {
$no_proxy = $my_no_proxy
}
class {"root-profile::profiledocker":
proxy => $proxy,
no_proxy => $no_proxy,
username => $username,
hostname => $hostname,
dns1 => $dns1,
dns2 => $dns2,
}
}
このアプリケーションのインストール ファイルが共有の
Samba サーバに配置される場合は、共有ファイル サーバの場所を入力パラメータ(
$net_iso_path)として提供し、Samba 共有をマウントするディレクトリ
/mnt/apps を作成します。 次に、部分的な設定の例を示します。入力パラメータ
($net_iso_path)はアプリケーション ロールからアプリケーション プロファイルに渡されます。ここで、ディレクトリ
/mnt/apps を作成し、samba 共有をマウントし、モジュールのパラメータ
$puppetDownloadMntPoint をマウント済みのディレクトリ
/mnt/apps に割り当てます。
[root@puma-qe-pupm manifests]# cat roleoracledb.pp
class root-role::roleoracledb (
$version = "12.1.0.2",
$file = undef,
$net_iso_path = undef,
[root@puma-qe-pupm manifests]# cat profileoracledb.pp
anchor {'root-profile::profileoracledb::begin':} ->
file {['/mnt','/mnt/apps']:
ensure => directory
} ->
mount {'/mnt/apps':
device => $net_iso_path,
fstype => 'cifs',
options => "username=$username,password=$password",
remounts => false,
atboot => false,
ensure => mounted,
} ->
oradb::installdb{ 'database':
version => $version,
file => $file,
databaseType => 'EE',
eeOptionsSelection => true,
eeOptionalComponents => $ee_op_comp,
oracleBase => $oracle_base,
oracleHome => $oracle_home,
createUser => true,
bashProfile => true,
user => $oracle_user,
group => $oracle_group,
group_install => $group_install,
group_oper => $group_oper,
downloadDir => $download_dir,
zipExtract => true,
puppetDownloadMntPoint => "/mnt/apps",
|
ステップ 5 |
SSH を使用して Service Catalog のオーケストレーション サーバに接続し、次に示すようにディレクトリ /var/www/html/hot_templates でアプリケーション用の Heat オーケストレーション テンプレートを作成します。 Heat テンプレートでは、入力が Prime Service Catalog サービスのものと同じであることを確認します。 テンプレートの設定セクションで、アプリケーション ロール パラメータを Prime Service Catalog 上のこのアプリケーションに対する入力とマップします。 [root@puma-qe-ibis03 ~]# cd /var/www/html/hot_templates
[root@puma-qe-ibis03 hot_templates]# cat docker_linux.template
{
"heat_template_version": "2013-05-23",
"description": "Template to provision Docker for Linux",
"resources":{
"server_config" : {
"type": "OS::Heat::StructuredConfig",
"properties" : {
"inputs": [
{ "name": "DockerProxy" },
{ "name": "DockerNoProxy" },
{ "name": "DockerUsername" },
{ "name": "DockerHostname" },
{ "name": "DockerDNS1" },
{ "name": "DockerDNS2" }
],
"config": {
"classes": {
"root-role::roledocker":{
"my_proxy":{"get_input":"DockerProxy"},
"my_no_proxy":{"get_input":"DockerNoProxy"},
"username": {"get_input": "DockerUsername"},
"hostname": {"get_input": "DockerHostname"},
"dns1": {"get_input": "DockerDNS1"},
"dns2": {"get_input": "DockerDNS2"}
}
}
}
}
}
},
"outputs":{
"config_id":{
"description": "Config ID will be required by Deployment Resource.",
"value":{
"get_resource": "server_config"
}
}
}
}
[root@puma-qe-ibis03 hot_templates]#
|