本系列文資料可參考以下:
前七天把環境都搞定之後,終於要來開始寫 Code 了,從這個階段開始 Ops 會辛苦一點,而 Developer 會開心一點。
Puppet 是用 manifests 來管理每一個 node 要做的事情,透過 Catalog 來存放 dependency information 進行 deploy
Master 和 Agent 之間取得佈署清單流程:
Master 和 Agent 提交的關係有:
在 Puppet master 上撰寫 manifests,而 manifests 是可以被即時生效,不需要 reload service。
這個篇幅屬於可 LAB 性質,可以參考 shazi7804/puppet-master-docker 來實作 Puppet code。
在建立 manifests 前或許你可以先查看有哪些 resource 能夠使用,在這邊簡單利用 package、service、file 來示範。
node 'ubuntu.puppet.com' {
package { 'chrony':
name => 'chrony',
ensure => present,
}
service { 'chrony':
name => 'chrony',
ensure => running,
enable => true,
}
}
node 'ubuntu.puppet.com' {
package { 'apache':
name => 'apache2',
ensure => present,
}
file { ['/var/www/html','/var/www/html/agent.puppet.com']:
ensure => 'directory',
owner => 'www-data',
group => 'www-data',
mode => '700',
}
file { '/var/www/html/agent.puppet.com/index.html':
content => "This puppet testing from $::fqdn",
owner => 'www-data',
group => 'www-data',
mode => '0400',
}
service { 'apache':
name => 'apache2',
ensure => running,
enable => true,
}
}
這個範例也藏了小小的陷阱: