我甚至不确定“健壮地”是否是一个词。 无论如何。 语境: 我们在局域网上有几百个Windows 7工作站。 我们很大程度上使用AD / GPOpipe理,但是我们需要做很多定期和/或手动的维护任务,这些任务不能通过GPO /计划任务完成。 例如,假设我想在工作站Y上执行程序X(它在后台运行,而不打扰用户),或者说我想按照时间表或者在工作站组B上执行任务A需求。 踢他们的电脑用户做到这一点(即使用RDP)是一个禁止,并不反对团体工作。 题: 什么是最好的方式,这是足够强大的,在安装后,我可以给它的初学者支持人(阅读:谁是恐惧的命令行,并混淆GUI界面比Firefox更复杂)? 我是一个有能力的程序员,如果有一套强大的工具或框架来完成这种任务,那么如果不需要太长时间,我会考虑自己一起攻击一些东西。 如果其他人使用工具或技术的组合来使远程工作站pipe理可以由初学者来完成,那么我还没有find它。 对于那些关心“为什么”的人:我是中级IT人员,被告知要实施远程pipe理解决scheme,允许任意/计划的远程执行,确认程序实际上远程运行,并且能够查看他们返回的内容。 “为什么?” 我问:“我不能在调度器机器上使用PsExec和任务调度程序吗? “不,”有人告诉我说,“第二周的技术人员将负责这个工作,他需要一个简单的GUI。” 我试过了: 我已经玩了一堆一键点击“传输文件到远程计算机,并运行PsExec”批/ VB脚本,但这些往往打破,不容易支持运行可定制的组。 我已经玩了一点Windows版本的Puppet ,但它不支持任意时间的远程执行(它能够将计算机组成树/节点结构是非常好的)。 我已经使用了旧版本的Altiris ,虽然它做了很多我想要的,但它的界面太糟糕了,速度很慢,崩溃了很多,而且对于pipe理来说可能太昂贵了。 SwiftWater的DMS解决scheme做了一些我想要的,但它是非常不发达的,封闭的(不是一个交易断路器,但不理想),我觉得缺乏支持和可靠性。
我刚刚安装了工头,我不知道如何去把我所有的configuration在版本控制。 我知道我可以使用Git来安装我在Puppet master上的每个模块,但是更喜欢一个更全面的解决scheme,它不仅包含模块,还包含与每个主机相关联的类以及主机上设置的任何variables。 任何build议将不胜感激与相关的工作stream程。 如果是相关的,我将GitLab设置为现场的中央Git服务器,并计划尽快安装一个CI服务器,如Jenkins。
我试图说明的用例是什么时候声明某个项目(eq mysqld服务)与默认configuration,可以包含在每个节点(class stripdown在这个例子中,basenode),仍然能够覆盖这个相同的项目一些特定的类(例如mysql :: server),被特定的节点(如myserver.local) 我用下面的例子说明了这个用例,我想在所有节点上禁用mysql服务,但是在特定的节点上激活它。 但是当然,Puppetparsing失败,因为Service [mysql]包含两次。 当然,mysql :: server类没有任何关系,可以作为剥离类的子类 有没有办法来覆盖服务[“MySQL”],或将其标记为主要的,或者其他? 我正在考虑虚拟物品和实现function,但它只允许多次应用物品,而不是重新定义或覆盖。 # In stripdown.pp : class stripdown { service {"mysql": enable => "false", ensure => "stopped" } } # In mysql.pp : class mysql::server { service { mysqld: enable => true, ensure => running, hasrestart => true, hasstatus => true, path => "/etc/init.d/mysql", […]
我有一个独特的情况,木偶包ensure => latest指令只适用于我的一些系统。 在30台服务器中,软件包在除了4之外都能正确更新。我试图将软件套件的主要版本从9.40降低到9.50。 我可以指定一个硬的水平,但我会遇到多架构通配符问题 。 清单代码片段: # Install packages $spppackages = [ "hp-snmp-agents", "hpssa", "hp-health", "hp-smh-templates", "hpsmh", "hpssacli", "hponcfg", ] package { $spppackages: ensure => latest, require => Yumrepo['HP-spp'], } 集体地位: mco package hp-snmp-agents status Summary of Ensure: 9.50-2564.40.rhel6 = 14 9.50-2564.34.rhel5 = 9 9.40-2506.37.rhel6 = 4 <== This is what I'm trying to […]
我们使用亚马逊Route53作为我公司的主DNS。 随着我们逐渐使用来自不同提供商的多种服务,他们中的每一个都需要某种DNS条目来validation我们的域名和/或使用他们的服务。 截至目前,我们在主要托pipe区域拥有约60个参赛作品。 它开始变得混乱,因为亚马逊甚至不允许每个条目都有一个简单的描述字段 ,所以我们知道它是什么意思,而不必parsing它。 有一个更好的/不同的方式来pipe理这个?
我希望能够非常容易地为dev / testing / prod设置新的服务器。 能够设置新的开发虚拟机的原因是显而易见的,但为了推动我的关注是增加一个新的生产服务器/迁移到新的服务器。 我假设一个传统的备份解决scheme将不会工作,因为硬件可能会不同,所以二进制文件/configuration可能会有所不同。 我想要获得木偶的经验,所以我正在考虑创build一个清单来设置我的用户,安装Postgres,Nginx,PHP-FPM等,并按我指定的方式进行configuration。 然后我可以在新的服务器上安装puppet,拷贝我的清单并在本地应用。 这将使我的服务器configuration保持同步更容易。 有没有更好的方法,我不知道,我的方法有什么陷阱?
我正在一个由位于多个数据中心和办公地点的CentOS系统组成的环境中工作。 我一直在使用一个合理的kickstart和一个可靠的post-install脚本,但是想简化和扩展这个过程。 我们有自己的yum repo,我可以控制硬件的使用范围(通常是HP ProLiant硬件或VMWare)。假设我每周都构build或重新部署一台服务器。 按照硬件准备所需的步骤 ,我开始安装操作系统。 我现在的问题是: 1)。 将系统引导到networking安装程序的一种很好的方法。 我一直在使用CentOS发行版中的10mb boot.iso / netinstall.iso。 我通过VMWare vCenter(对于VM)或HP ILO(通常通过SSH,指向ISO的URL)来启动安装。 在大多数情况下,我无法使用PXE,因为数据中心位置没有可用的DHCP。 有没有一个干净的方法来获得boot.iso到USB密钥,例如? 2)。 有时我需要为kickstart设置一个静态IP。 有没有更好的方法来input信息,而不是在安装程序提示符下的boot:命令行上input信息? 3)。 一个定制kickstart的好方法。 现在,我拥有大部分我需要的function,但有时需要更改分区scheme以适应不同的RAID设置(例如两个SmartArray控制器)。 现在,我基本上为每个系统(或一组系统)设置创build一个单独的kickstart文件。 我结束了一个完整的旧* .cfg文件的目录。 我知道有一个更优雅的方式来做到这一点。 PHP也许? 4)。 帮助安装方法。 按原样,从提示到完成的完整构build需要5-10分钟。 我注意到,安装方法很重要,取决于位置。 HTTP在yum服务器本地运行良好,但是在我们与其他站点的高带宽低延迟连接上却很差。 NFS在这些情况下效果更好。 我将不胜感激在kickstart过程之前用于预先设置或系统参数的任何漂亮的技巧。 5)。 安装后脚本运行良好。 它会提取额外的软件包,设置一些初始设置,修剪服务列表并填充一些用户/密码/ SSH密钥。 我想通过适当的configurationpipe理来运行这个环境(我习惯了CFEngine ,但是现在认为Puppet或者Bcfg2可能是更好的select)。 我是否删除安装后脚本并将这些function移到CFEngine中? 不过,这可能是一个不同的问题。 以下是我一直使用的kickstart文件的一个例子: install text url –url http://yum.abc.com/5.6/os/x86_64/ #nfs –server=yum.abc.com –dir=/yum/5/os/x86_64 lang […]
我写了一个angular色来编辑motd当用户login到机器,但我想个性化motd打印机器的主机名 我使用什么variables? 或者我该怎么做? 模板? 怎么样? 我使用motd文件的copy module 所以,例如,我想能够说“欢迎来到$主机名”,那么如何parsing这个主机名使用ansible?
我们使用puppet来pipe理一组Ubuntu,并且很快就要求每台服务器共享一个通用的SSL证书,以便通过HTTPS为网站提供服务。 当然,我们想使用木偶来pipe理证书,但是意识到将它放入VCS(从木偶大师获取模块的地方)这一事实可能不是一个好主意,因为这会影响安全性。 有没有更好的解决scheme,任何人都知道?
在类中定义依赖关系时,每个Package可以全局定义一次。 我有configuration的层次结构,一些软件包应该安装在所有机器上(进入默认configuration),但其他应该只安装在某些类别的机器上。 当Puppet威胁是重复的声明时,我该如何检查这个包是否已经在机器上? Duplicate declaration: Package[wget] is already declared 我应该使用这样的function吗? if defined( Package[$package] ) { debug("$package already installed") } else { package { $package: ensure => $ensure } } 我期望从configuration工具默认处理这个问题…我错过了什么?