标签: puppet

在puppet中管理linux的用户密码

我需要使用puppet创建一个带密码的测试用户.

我已经读过,木偶无法以通用的跨平台方式管理用户密码,这很可惜.我正在为Red Hat Enterprise Linux Server 6.3版做这个.

我这样做:

user { 'test_user': 
  ensure   => present,
  password => sha1('hello'),
}
Run Code Online (Sandbox Code Playgroud)

puppet更新了用户的密码,但Linux在我尝试登录时说login/pwd不正确.

如果我在Linux中手动设置密码sudo passwd test_user,然后/etc/shadow在puppet中查看并硬编码该值,它可以工作(我可以登录).就像是:

user { 'test_user': 
  ensure   => present,
  password => '$1$zi13KdCr$zJvdWm5h552P8b34AjxO11',
}
Run Code Online (Sandbox Code Playgroud)

我也试过$1$在前面添加sha1('hello'),但它也不起作用(注意,$1$代表sha1).

如何修改第一个例子使其工作(使用puppet文件中的明文密码)?

ps:我知道我应该使用LDAP或sshkeys或其他东西,而不是在puppet文件中硬编码用户密码.但是,我这样做只是为了运行puppet vagrant测试,所以可以硬编码用户密码.

linux puppet

36
推荐指数
4
解决办法
5万
查看次数

如何从本地VirtualBox/Vagrant开发环境完成生产部署?

最近我开始阅读有关使用虚拟化软件构建开发环境(我是初学者)的看法,并且"基础架构作为代码"似乎是一个非常强大的概念.

我非常喜欢这里描述的工作流程结构:

  1. 团队周围使用相同的基础VirtualBox图像
  2. Vagrant用于在帮助下快速"建立"并"提供"这样的图像到所需的配置
  3. Chef(或Puppet)食谱,这是唯一需要置于版本控制之下的代码.

但是,我仍然不太明白如何在生产服务器上传输和部署代码.

据我所知,保持DEV和PROD环境相同的常用方法是将Production服务器实例管理为另一个要使用Chef配置的虚拟映像.我可以在Production服务器上安装完全相同的操作系统,因为我(和团队)每天都使用VirtualBox-Vagrant-Chef.

但是,生产服务器可能具有与虚拟客户机操作系统中的硬件不同的硬件,这可能会再次导致不一致.

所以,这是一个问题:

从使用VirtualBox-Vagrant-Chef工具链管理的开发环境向生产服务器传输和部署代码的已知和常见最佳做法是什么?这种做法是否允许任何持续部署?

[编辑]:注意:是否有任何在生产服务器上运行与Chef/Vagrant配置相同的VM实例的做法,如此图所示

virtualbox puppet chef-infra continuous-deployment vagrant

36
推荐指数
1
解决办法
1万
查看次数

傀儡中有迭代器和循环吗?

当我定义(?)资源时,例如为了确保dir结构,是否有可用的循环?

像那样:

  for X in [app1,app2] do:
    file { '/opt/app/' + X:
      ensure => directory,
      owner  => 'root',
      group  => 'root',
      mode   => '0644',
    }
Run Code Online (Sandbox Code Playgroud)

我有几十个目录,我真的厌倦了在木偶中宣布它...它需要15 LOC的bash.

有任何想法吗?

deployment automation puppet

35
推荐指数
2
解决办法
4万
查看次数

从清单脚本安装puppet模块

我正在使用puppet来配置一个vagrant(基于ubuntu的)虚拟机.在我的脚本中,我需要:

sudo apt-get build-dep python-lxml
Run Code Online (Sandbox Code Playgroud)

我知道我可以安装apt puppet模块,所以我可以使用:

apt::builddep { 'python-lxml': }
Run Code Online (Sandbox Code Playgroud)

但我找不到任何关于从脚本安装模块以及如何包含/要求它的参考.在我看来,木偶文档仅指从命令行木偶工具安装

我也尝试过这样的事情:

define build_dep($pkgname){
    exec {
    "builddepend_$pkgname":
    commmand => "sudo apt-get build-dep $pkgname";
    }
}
build_dep{
    "python-imaging":
    pkgname => "python-imaging";

    "python-lxml":
    pkgname => "python-lxml";
}
Run Code Online (Sandbox Code Playgroud)

但是傀儡退出了这个错误.并且:

exec{"install apt module":

    command => "puppet module install puppetlabs/apt"
}

class { 'apt':
        require => Exec["install apt module"]}
include apt

apt::builddep { 'python-imaging':
 }
Run Code Online (Sandbox Code Playgroud)

但得到了 could not find declared class apt at..

有任何想法吗?方向?我知道我错过了一些明显但却无法解决的问题.

编辑:如果我预先安装(puppet module install从命令行),apt:builddep …

puppet vagrant

35
推荐指数
3
解决办法
2万
查看次数

如何在Puppet文件资源中获取远程文件(例如来自Github)?

file { 'leiningen': 
    path => '/home/vagrant/bin/lein',
    ensure => 'file',
    mode => 'a+x',
    source => 'https://raw.github.com/technomancy/leiningen/stable/bin/lein',
}
Run Code Online (Sandbox Code Playgroud)

是我的想法,但木偶不知道http://.有什么关于puppet://我错过的吗?

或者如果没有,有没有办法以声明方式首先获取文件然后将其用作本地源?

http puppet

31
推荐指数
3
解决办法
4万
查看次数

Puppet:指定要安装的软件包的版本

显然这是不可能的,但我无法相信我是唯一需要它的人.

我想指定要安装的php版本,因为我正在处理一个需要php 5.2的旧项目.

实际上我的VM基于Oneiric和php 5.3

你有任何解决方案吗?

php packages puppet vagrant

29
推荐指数
2
解决办法
4万
查看次数

如何将项目添加到.dockerignore?

我无法找到许多.dockerignore文件应该是什么样子的例子.

使用puppet在docker容器上安装一些软件包会导致映像从600MB扩展到3GB.我正在尝试使用.dockerignore文件将大小保持为最小值

$ cat Dockerfile  
FROM centos:centos6

#Work around selinux problem on cent images
RUN yum install -y --enablerepo=centosplus libselinux-devel

RUN yum install -y wget git tar openssh-server; yum -y clean all

Add Puppetfile / 
RUN librarian-puppet install
RUN puppet apply --modulepath=/modules -e "class { 'buildslave': jenkins_slave => true,}"
RUN librarian-puppet clean
Run Code Online (Sandbox Code Playgroud)

如果我跑,docker images --tree我可以看到图像瞬间增长几GB

$ docker images --tree
                ??e289570b5555 Virtual Size: 387.7 MB
                ? ??a7646acf90d0 Virtual Size: 442.5 MB
                ?   ??d7bc6e1fbe43 Virtual Size: 442.5 MB …
Run Code Online (Sandbox Code Playgroud)

puppet docker

29
推荐指数
4
解决办法
4万
查看次数

选择流浪汉配置者

任何人都可以解释为什么选择木偶或厨师流浪汉供应者而不是壳供应商会更好吗?

背景

我正在开始使用Vagrant.我遇到问题的一个原因是决定使用哪个配置器.到目前为止,我已经使用shell配置程序取得了一些成功,但是它比我预期的更可靠地运行它.

目前,我不熟悉红宝石,木偶或厨师,但如果必须,我很乐意学习其中的任何一个或全部.我与木偶和厨师一起玩的早期经验是,如果其他人的配方完全符合您的要求,那么它的效果非常好,但做一些非标准的工作意味着在红宝石中编写解决方案.

我知道有关比较傀儡和厨师的文章,我不太担心他们使用哪一个,而不是知道何时以及为什么我应该使用它们.

bash puppet configuration-management chef-infra vagrant

28
推荐指数
2
解决办法
5773
查看次数

木偶节点主机名

我正在使用puppet来配置服务器.我想在*.erb模板中打印当前的机器(节点)名称.有hostname变量,但这包含puppetmaster主机名.关于这个主题是否有任何好的参考/清单?

hostname puppet

27
推荐指数
3
解决办法
4万
查看次数

什么是机器上的木偶代理状态?

我知道

puppet agent --disable "my message"  --verbose
Run Code Online (Sandbox Code Playgroud)

但是我想知道某台机器的某些地方,它的木偶代理状态是什么.我不知道怎么做

man puppet-agent
Run Code Online (Sandbox Code Playgroud)

是否有一个命令可以告诉我代理是启用还是禁用?

谢谢.

-

-------------------编辑

CentOS release 6.6 (Final)

bash-4.1$ puppet --version
3.7.4
bash-4.1$ file /usr/bin/puppet 
/usr/bin/puppet: a /usr/bin/ruby script text executable
Run Code Online (Sandbox Code Playgroud)

------------------- EDIT2

无论是启用还是禁用,我总是这样:

[root@p1al25 ~]# cat `sudo puppet agent --configprint agent_catalog_run_lockfile`
cat: /var/lib/puppet/state/agent_catalog_run.lock: No such file or directory
[root@p1al25 ~]# puppet agent --disable "my message"
[root@p1al25 ~]# cat `sudo puppet agent --configprint agent_catalog_run_lockfile`
cat: /var/lib/puppet/state/agent_catalog_run.lock: No such file or directory
[root@p1al25 ~]# service puppet status
puppet (pid  4387) is …
Run Code Online (Sandbox Code Playgroud)

puppet

27
推荐指数
2
解决办法
6万
查看次数