如何使用puppet为不同用户设置自定义bash环境?

2023-12-20

我刚刚开始使用 puppet(和 vagrant)为我们的团队设置开发环境,该团队由 8 名以上的开发人员组成,每个人都有其特定的 bash 配置等。我已经将所有软件安装在系统来快速部署新的开发虚拟机,但我不确定以自动化的方式为每个特定用户设置开发环境的最佳方法(我们最终将拥有多个开发环境,并且一次编写一次会很方便)并完成)。

例如,我想设置一个用户joe,从 github 克隆 Joe 的配置存储库,然后在该 github 存储库中运行脚本来为 Joe 设置环境。对于如何为乔以及吉米、詹姆斯、朱莉、简、吉姆、杰克和金博执行此操作有什么建议吗?

如果有帮助的话,开发机器几乎肯定是 ubuntu 系统。


除了@Matt的建议之外,我还创建了一个自定义木偶模块 http://docs.puppetlabs.com/puppet/2.7/reference/modules_fundamentals.html根据每个人的 github 偏好实例化配置环境。由此产生的木偶模块users看起来像这样:

users/
├── manifests
│   ├── init.pp      # base level configurations for all users
│   ├── jake.pp      # custom setup for jake
│   ├── james.pp     # custom setup for james
│   ├── jane.pp      # custom setup for jane
│   ├── jim.pp       # custom setup for jim
│   ├── jimbo.pp     # custom setup for joe
│   ├── jimmy.pp     # custom setup for jimmy
│   ├── joe.pp       # custom setup for julie
│   └── julie.pp     # custom setup for jimbo
└── templates

相关花絮位于每个用户的自定义设置文件中。例如,这是jim.pp可能看起来像:

class users::jim {

  # make sure that all base configuration in init.pp is set up first
  require users

  # add the user here
  user { 'jim':
    # comment    => 'Dean Malmgren',
    home       => '/home/jim',
    shell      => '/bin/bash',
    uid        => 201,
    managehome => 'true',
    groups     => ['sudo', 'vagrant'],
    provider   => 'useradd',
    password   => '$6$kxHLEuHW$78m3zHVLu0XUUDaU4bT.PEg./FfcloJiWml',
  }

  # clone the repository the first time
  exec { 'jim-clone-dotfiles':
    command => 'git clone git://github.com/jim/dotfiles.git && python dotfiles/create_softlinks.py',
    cwd     => '/home/jim',
    creates => '/home/jim/dotfiles',
    user => 'jim',
    group => 'jim',
    require => [ Package['git'] ],
  }

  # fetch and update if jim decides to update his dotfiles repo
  exec { 'jim-update-dotfiles':
    command => 'git merge --ff-only origin/master && python create_softlinks.py',
    cwd     => '/home/jim/dotfiles',
    unless => 'git fetch && git diff --exit-code origin/master',
    user => 'jim',
    group => 'jim',
    require => Exec['jim-clone-dotfiles'],
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用puppet为不同用户设置自定义bash环境? 的相关文章

  • 使用 vagrant、docker 和 git 进行项目布局

    所以我最近发现了 docker 和 vagrant 并且我正在启动一个新的 Php 项目 我想在其中使用两者 Vagrant 是为了拥有一个所有开发人员都可以使用的可互换环境 Docker 用于生产 但也在 vagrant 机器内部 因此开
  • 如何在 Vagrant 和 Homestead 中回滚 PHP 版本?

    因此 我的公司正在使用 PHP 和 Laravel 为客户进行软件开发 我是公司的新人 正在使用 VirtualBox 设置较新的 Macbook 使用 Homestead 和 Vagrant 设置 Laravel 我已经完成了所有设置 以
  • rbenv 不断生成 vagrant shim

    我正在使用最新的 vagrant 和 rbenv 和各种红宝石 我正在使用最新的 vagrant 它不再使用 gem 当我执行 vagrant 命令时 我看到以下错误 rbenv vagrant command not found 我已经从
  • 流浪者 403 禁止

    我已经成功运行 Vagrant 大约一周了 昨晚我运行了 vagrant reload 现在我无法再访问我的网站 VirtualBox 版本 4 2 16 流浪者版本1 2 7 我的 Vagrantfile 和 bootstrap sh h
  • 使用流浪文件回答提示?

    是否可以将脚本添加到 Vagrantfile 来回答提示 我正在为 docker 配置一个 ubuntu 盒子 config vm box ubuntu config vm provision shell inline gt sudo ap
  • 使用多个参数多次调用傀儡定义的资源

    我有一个简单的木偶定义的资源 如下所示 define mything number device otherthing file place number ensure gt directory mount place number dev
  • Puppet - 在迭代哈希时,如果 hiera 中不存在,则在清单中设置默认值

    我正在迭代 hiera 哈希中的许多条目 并希望通过在清单中设置默认值 例如ensure groups managehome等 并且如果 hiera 中存在重复的键 值对 则覆盖默认值 到目前为止 我尝试过的所有方法都无法获得默认值 我知道
  • 允许两个或多个流浪虚拟机在自己的网络上进行通信

    我想创建多个可以直接相互通信而无需使用公共 IP 的服务器 他们仍然需要互联网访问 但网络外部不需要连接到他们 创建一个盒子通常可以工作 但是当我添加其他服务器时 网络会失败 苹果系统 10 8 5虚拟盒 4 3 12GuestOS Ubu
  • Vagrant+Puppet puppet.module_path 不起作用

    所以我的 Vagrant 文件设置如下 VAGRANTFILE API VERSION 2 Vagrant configure VAGRANTFILE API VERSION do config config vm box hashicor
  • 仅在配置时才在 Vagrantfile 中运行代码

    我想在运行时在屏幕上显示一些文本vagrant up or vagrant provision etc 当且仅当正在配置 为了vagrant up它仅在第一次运行 或者如果特别强制 provision 如何才能做到这一点 添加 shell
  • Ansible bitbucket 克隆存储库配置 ssh 错误

    我之前发布过这个问题 但那里的答案不再有效 总之 当使用 Ansible 配置我的 vagrant box 时 在尝试使用 ssh 克隆我的 bitbucket 私有存储库时 我遇到了一个神秘的错误 该错误指出 权限被拒绝 公钥 然而 如果
  • Vagrant 错误:无法挂载 VirtualBox 共享文件夹(Guest Additions、vboxsf)

    问题 我在 Windows 10 上安装了 Vagrant 这样我就可以在虚拟机中创建个人本地开发环境 我读到的有关 Vagrant 的所有内容都表明我什至可以启动多个系统并通过 NAT 端口转发测试它们之间的通信 但首先 我只想在对其余部
  • Homestead 无法远程访问第二个站点

    我的一个站点设置正常 但第二个站点无法远程访问 My YAML ip 192 168 10 10 memory 2048 cpus 1 provider virtualbox authorize ssh id rsa pub keys ss
  • Vagrant + Chef:配置错误“虚拟机上缺少 Chef 所需的共享文件夹。”

    我已经使用 Chef library Chef 安装了 Vagrant Virtualbox 当我做vagrant up第一次 食谱被正确加载 但是 当我事后进行配置时 无论是vagrant provision vagrant reload
  • Ansible bitbucket 克隆配置 ssh 错误

    总之 当使用 Ansible 配置我的 vagrant box 时 在尝试使用 ssh 克隆我的 bitbucket 私有存储库时 我遇到了一个神秘的错误 该错误指出 主机密钥验证失败 然而 如果我流浪 ssh 然后运行 克隆 命令 私有存
  • 开发/生产中的 Ansible 服务器/组

    我所处的情况是看不到正确的使用方法 我有多个分配了不同角色的服务器 分布在多个组中 与生产 登台环境相比 我在本地 Vagrant 环境中遇到了一些使用 group vars 的困难 在生产中 有更多的服务器 分配的组更少 在我的 Vagr
  • Vagrant Berkshelf - 架子路径?

    是否可以设置 berkshelf 插件放置其安装的说明书的路径 如在 berkshelf 文件夹中 我运行的是 Windows 7 我目前正在尝试使用 opscode 说明书将 mysql 服务器安装到虚拟机 并且在工作中他们将 HOMED
  • 如何使用 Vagrant 自动安装 Ansible Galaxy 角色?

    仅使用一本剧本 则不可能让 Ansible 自动安装依赖角色 至少按照这个所以线程 https stackoverflow com questions 25230376 how to automatically install ansibl
  • 在 MacOs Big Sur 升级中遇到 Vagrant Up 错误 [已关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我刚刚将我的 mac 操作系统从 Catalina 升级到 Big Sur 我的vagrant以前工作正常 然后我就遇到了这个问题 流浪者
  • psql:致命:角色“vagrant”不存在[重复]

    这个问题在这里已经有答案了 我创建了一个流浪实例 每次尝试时都会收到此错误psql在终端如何修复它 错误如下 psql 致命 角色 vagrant 不存在 我以为流浪汉会照顾这个 这是我的流浪文件 Vagrant require plugi

随机推荐

  • “Using”关键字调用基类构造函数

    我有以下基类 class Grammateas public Grammateas std string name name name virtual Grammateas private std string name 以及以下派生类 c
  • 从 Linux 用户空间设置 16550A UART 硬件 FIFO 中断级别

    我目前正在使用 16550 兼容的 UART 并且我希望能够更改 FIFO 中断触发级别 我在高 UART 负载下丢失字节 并且我想降低阈值 这是一个动力不足的嵌入式系统 当然 如果我愿意 我可以在 8250 port c 驱动程序中更改它
  • c++ 如何运行内容存储在字符数组中的.exe文件?

    我正在制作一个特定的程序 我只是想知道我是否可以这样做 运行一个文件 其内容存储在 WINDOWS 上的字符数组中 这是读取可执行文件并将其存储在字符数组中的代码 filetoopen open C blahlbah exe ios bin
  • React.memo - 为什么我的相等函数没有被调用?

    我有一个父组件 它根据通过 props 接收到的数组来渲染子组件的集合 import React from react import PropTypes from prop types import shortid from shortid
  • Ruby openssl 中的 AES 等效项?

    Gibberish 库提供了一个很好的 CBC 算法 In Jascascript GibberishAES enc Made with Gibberish n password Outputs U2FsdGVkX1 21O5RB08bav
  • android 动画后按钮不起作用

    我在 android 中创建了一个视图 我需要从下到上对其进行动画处理 反之亦然 我已经使用 TranslateAnimation 成功地做到了这一点 但问题是我的视图上有几个按钮 当动画出现时 触摸点保留在原始位置并且不会移动到新位置 因
  • List 是指针吗?

    我注意到的行为List
  • 始终位于顶部窗口

    我正在寻找一种解决方案 以便使 JFrame 始终处于顶部 并且 始终 我真正的意思是 始终 setAlwaysOnTop true 当我以全屏模式启动游戏时 这将不起作用 我知道您通常不希望窗口保持在顶部 但在这种情况下这是必需的 这是不
  • cdk虚拟滚动问题

    有没有人遇到过 Angular 7 cdk 虚拟滚动在 mat tab 组中工作异常的问题 https github com angular material2 issues 13981 https github com angular m
  • jQuery 分页插件

    希望这是很容易解决的问题 我在理解上遇到了一些问题jQuery 分页 http plugins jquery com project pagination plugin 本质上 我想做的就是加载 PHP 文件 然后对结果进行分页 我试图摆脱
  • 基本类型的 C++ 类包装器

    我见过 使用的许多库都有 typedef 来提供可移植的 固定大小的变量 例如 int8 uint8 int16 uint16 等 无论平台如何 它们都是正确的大小 并且 c 11 本身使用头文件 stdint txt 来实现 H 最近在我
  • 如何在 C++ 中使用小数(浮点)?

    根据IEEE 754 2008 http en wikipedia org wiki IEEE 754 2008有 存在三种二进制浮点基本格式 可以使用 32 64 或 128 位进行编码 和两种十进制浮点基本格式 可以使用 64 或 12
  • 如何通过货币名称获取货币符号?

    我想要获得货币符号 例如 or 按货币名称 例如USD or EUR 对于英语 美国 我可以获得符号 如果英语 美国 设置为设备上的语言 Currency currency Currency getInstance Locale getDe
  • Firebase 在 iOS 上使用 Swift 多次调用“Observe”

    当我开始observer在 Firebase 数据库节点上 我注意到 Firebase 继续调用该方法observer即使没有数据变化 这是我的设置 FIRDatabase database reference withPath test
  • 如何正确配置嵌入式 OpenEJB 容器进行测试?

    这是我的 SLSB Stateless public class MyService PersistenceContext unitName abc EntityManager em public boolean exists int id
  • Intellij IDEA 未从 Groovy 项目中的 @Grab 导入依赖项

    我正在处理一个 groovy 脚本 它使用 Grab 注释导入依赖项 该脚本将在 IDEA 中从命令行运行 但是 在 IDE 中 导入显示为红色 不可解析 并且不会对导入的类提供自动完成功能 我正在通过代理访问企业存储库 该代理已在 IDE
  • 为 C++ 应用程序提供 HTTP Web 服务器功能

    我有一个 C 应用程序 正在寻找一个库 使其成为能够提供静态文件以及执行非常简单的任务的 HTTP 服务器 唯一的限制是它必须是跨平台的 我有什么选择 澄清 我的应用程序需要一个 Web 界面 该应用程序是执行其他任务的后台程序 我想提供一
  • 使用 HTML5 验证多个电子邮件地址

    我正在尝试构建一个电子邮件表单 该表单将多个逗号分隔的电子邮件作为输入并使用 HTML5 验证它们 我想使用以下正则表达式来检查输入的完整性 b A Za z0 9 A Za z0 9 A Za z 2 4 b 这是我尝试过的 这似乎不适用
  • 如何在 CakePHP 中定义模型的“全局”查找条件?

    是否可以定义在使用特定模型的所有控制器和功能中始终有效的查找条件 例如 如果我只想退回有库存的产品 无论如何 也许在模型中的某个地方 conditions gt array inStock gt gt 0 我认为您可以尝试在模型上执行一个函
  • 如何使用puppet为不同用户设置自定义bash环境?

    我刚刚开始使用 puppet 和 vagrant 为我们的团队设置开发环境 该团队由 8 名以上的开发人员组成 每个人都有其特定的 bash 配置等 我已经将所有软件安装在系统来快速部署新的开发虚拟机 但我不确定以自动化的方式为每个特定用户