我在精确的32基盒上使用vagrant 1.0.1来玩木偶.供应工作正常,我的清单正在执行.默认情况下,vagrant会在guest虚拟机上的/ opt/vagrant_ruby/bin/puppet下安装puppet 2.7.14.
我如何配置流浪者(或曾经在客人身上安装木偶)使用更新版本如puppet 3.0或3.1?
我们正在使用基于MongoDB用户的身份验证,我想快速运行一个命令来检查用户是否已在数据库中创建,以便puppet不会重复尝试创建用户.
以下是我们检查副本集是否已初始化的方法:
/usr/bin/mongo --host ${members[0]} --quiet --eval 'rs.status().ok' | grep -q 1
Run Code Online (Sandbox Code Playgroud)
验证可能有类似的技巧吗?我在这里检查了文档http://www.mongodb.org/display/DOCS/dbshell+%28mongo%29+Reference,我看不到这样做的方法吗?
我有一个Lift应用程序打包为WAR存档,必须在Jetty下部署.但是,我希望能够自动执行一些任务:
我正在使用SBT,我不知道这将与Puppet或类似的东西有多好.你会怎么做?
我在两个节点上安装了puppet,服务器节点主机名为"uys0115",客户端节点主机名为"uys0119",服务器节点已经设置了客户机节点.当我执行commad:时puppet cert list --all,我们可以看到:
+ "uys0115" (24:55:95:77:8E:60:33:77:C8:D4:74:EA:01:21:BD:5A)
+ "uys0119" (86:53:1B:81:E5:4F:88:23:E8:34:E1:AB:03:D4:AE:7C)
Run Code Online (Sandbox Code Playgroud)
puppet主目录是/ etc/puppet /,我写了一个例子和文件组织如下:
/etc/puppet/--
|-/manifests/site.pp
|-/modules/test/--
|-/files/text.txt
|-/manifests/init.pp
|-/manifests/test.pp
Run Code Online (Sandbox Code Playgroud)
代码/etc/puppet/modules/test/manifests/test.pp是:
class test1 {
package { "bison":
ensure=>"installed",
}
exec { "puppet test":
command=>"/bin/touch /tmp/puppet-test",
}
file { "/tmp/test.txt":
ensure => "present",
source => "puppet:///modules/test/test.txt"
}
}
Run Code Online (Sandbox Code Playgroud)
而代码/etc/puppet/modules/test/manifests/init.pp就是import "*"; 和代码/etc/puppet/manifests/site.pp如下:
import "test"
node default {
include "test1"
}
Run Code Online (Sandbox Code Playgroud)
当我在客户端节点uys0119和exec命令puppet agent --test --server uys0115.它成功执行并在目录/ tmp /中创建了两个文件puppet-test和test.txt.在我执行命令的服务器节点中puppet apply site.pp,它也成功执行并创建了两个文件.但是,终端输出两条警告信息: …
我正在使用这个Apache2处理Puppet模块
https://forge.puppetlabs.com/puppetlabs/apache
当我执行以下代码时,它成功安装了虚拟主机,但它永远不会为Apache2启用PHP5模块.我该如何启用它?
class { 'apache':
mpm_module => 'prefork',
}
apache::vhost { 'mysite':
...
xyz
...
}
apache::mod { 'php5': }
Run Code Online (Sandbox Code Playgroud)
我还尝试用以下代码替换该行:
apache::mod { 'php': }
Run Code Online (Sandbox Code Playgroud)
但这没有帮助.php5模块没有启用.我必须通过运行手动启用它a2enmod php5.文档没有说明这一点.谢谢!
我正在尝试在木偶模板中的参数中添加一个数字,如下所示
"https://localhost:<%= 9443 + @offset %>/service/"
Run Code Online (Sandbox Code Playgroud)
这给了我以下错误.
细节:字符串无法强制进入Fixnum
'offset'是一个数值.是否有可能在木偶中进行这种算术运算?
我正在使用hiera 为我的节点分配类webserver或类dbserver.该webserver班仅包括了Apache和设置它的一些配置(如端口).显然我不想为每个节点复制这个配置,所以我把它放在common.yaml中.但是,我的common.yaml变大了,所以我想把它分开.我想有一个文件包含webserver角色的配置,另一个文件包含dbserver角色等.我想我的hiera.yaml看起来像这样:
:hierarchy:
- "fqdn/%{::fqdn}"
- "role/%{ROLE}"
- common
Run Code Online (Sandbox Code Playgroud)
当role文件夹将包含类似的文件webserver.yaml,appserver.yaml,dbserver.yaml.我已经看到各种博客帖子说解决方案是创建一个自定义的"角色"事实,但大多数人通过从代理节点上的文件(例如从/etc/role)加载该事实来实现这一点,这对我来说似乎打败了木偶点(我特意使用木偶,所以每次我希望它有一些新角色时我都不必登录每个节点并更改一些配置).
为了清楚起见,我不想编辑代理上的文件以使其工作,我希望使用主服务器上的配置完成所有操作.
我想我可能会有类似下面的内容并详尽地列出每个角色作为层次结构中的元素,但这似乎不可管理.
:hierarchy:
- "fqdn/%{::fqdn}"
- "webserver"
- "appserver"
- "dbserver"
- common
Run Code Online (Sandbox Code Playgroud)
有什么方法可以解决这个问题吗?
在Puppet代理的初始配置期间,代理获得由主服务器识别的权限(通常是主服务器本身)签署的安全证书,随后它将向主服务器标识自己.此证书是否过期或需要更新?
使用这个puppet-module 来 apt,我如何导入这个密钥:
https://www.dotdeb.org/dotdeb.gpg
Run Code Online (Sandbox Code Playgroud)
我想要实现的是两个 shell 命令的与木偶相关的解决方案:
wget https://www.dotdeb.org/dotdeb.gpg
apt-key add dotdeb.gpg
Run Code Online (Sandbox Code Playgroud)
这个木偶模块的文档对此并不清楚。这个怎么做?
hiera.yaml
---
:hierarchy:
- node/%{host_fqdn}
- site_config/%{host_site_name}
- site_config/perf_%{host_performance_class}
- site_config/%{host_type}_v%{host_type_version}
- site/%{host_site_name}
- environments/%{site_environment}
- types/%{host_type}_v%{host_type_version}
- hosts
- sites
- users
- common
# options are native, deep, deeper
:merge_behavior: deeper
Run Code Online (Sandbox Code Playgroud)
我们目前有这个hiera配置.因此,配置按以下顺序合并:common.yaml> users.yaml> sites.yaml> hosts.yaml> types/xxx_vxxx.yaml>等.对于变量顶层次结构,仅当该文件存在时才会被覆盖.
例如:common.yaml
server:
instance_type: m3.medium
Run Code Online (Sandbox Code Playgroud)
site_config/mysite.yaml
server:
instance_type: m4.large
Run Code Online (Sandbox Code Playgroud)
因此对于所有其他站点,实例类型将是m3.medium,但仅对于mysite,它将是m4.large.
我怎样才能在Ansible中实现同样的目标?