我相信Joel Test是在2000年写的.现在是时候让更新与现代更加一致了.我会开始:
变成
许多Joel Test假设不再适用.我认为我们今天不需要询问组织是否使用源代码控制,包含错误数据库,或者是否具有"规范".另一方面,一些Joel测试项目与以往一样重要:最新的时间表和最先进的工具.
帮我更新2010年的清单,以便我再次将它带到管理层.
什么Perforce p4
命令列出给定更改列表中更改的文件?请注意,我只想要已更改的文件的名称,而不是内容差异.
假设我有一种情况,我只需要在某些生产服务器上应用 Puppet 配置中的两个文件,而不需要触及配置的其余部分。
/opt/aservice/myfile/thekey.conf /opt/myfile/thekey.salt
我们还假设这些是由以下 Puppet 清单控制的:
#
# author: Nathan Basanese (nathan@basanese.com)
# date: 04/17/2048
#
class keyconfig ( $cluster ){
notify {"Deploying key config. files to $fqdn":}
file {'/opt/aservice/key/config/thekey.conf':
ensure => present,
mode => '0644',
owner => 'aservice-serv',
group => 'aservice-serv',
source => "puppet:///modules/keyconfig/$cluster/thekey.conf",
}
file {'/opt/aservice/key/config/thekey.salt':
ensure => present,
mode => '0644',
owner => 'aservice-serv',
group => 'aservice-serv',
source => "puppet:///modules/keyconfig/$cluster/thekey.salt",
}
}
Run Code Online (Sandbox Code Playgroud)
我如何从 Puppet Master 仅将这两个文件应用到给定服务器?
也许,在puppet agent
目标服务器上运行的命令中,我可以指定要使用的特定 Puppet 类吗?
我以前使用过该puppet resource …
我正在使用此任务向文件添加一行:
lineinfile: "dest={{ ansible_env.HOME }}/{{ deploy_dir }}/config/deploy/{{ stage_name }}.rb
insertbefore='# role-based syntax'
line='server "'{{ ip_addr }}'", user: "'{{ user_name }}'", roles: %w{'{{ role }}'}'"
Run Code Online (Sandbox Code Playgroud)
其中添加了这一行:
server '172.16.8.11', user: 'vagrant', roles: %w{'api'}
Run Code Online (Sandbox Code Playgroud)
但我不想要周围的引号api
。相反,我想要这个输出:
server '172.16.8.11', user: 'vagrant', roles: %w{api}
Run Code Online (Sandbox Code Playgroud) 我正在尝试使我们的配置更加模块化.目前,我们在每个环境中都有大多数硬编码模板文件,这些文件与init状态中的jinja匹配.我正在拆分状态,配置,并添加一些需要在所有环境中以相同配置值维护的默认值.
这是我的支柱的一个例子:
/../pillars/amq/amq.sls
default_routes:
Queue1:
- from_uri: 'activemq:fromSomeURI1'
- process_ref: 'processorName1'
- to_uri: 'activemq:toSomeOutURI1'
Queue2:
- from_uri: 'activemq:fromSomeURI2'
- process_ref: 'processorName2'
- to_uri: 'activemq:toSomeOutURI2'
Run Code Online (Sandbox Code Playgroud)
这是我的模板文件的示例:
/../salt/amq/conf/camel.xml.template
lines lines lines
lines lines lines
...
{% for route, args in pillar.get('default_routes', {}).items() %}
<route>
<from uri="{{ route.from_uri }}"/>
<process ref="{{ route.process_ref }}"/>
<to uri="{{ route.to_uri }}"/>
</route>
{% endfor %}
...
lines lines lines
lines lines lines
Run Code Online (Sandbox Code Playgroud)
我需要做的是向支柱添加值字典,并循环遍历默认值列表,从camel.xml.template中构建所有环境中的默认路由.然后,支柱还将存储特定于环境的值,我将以非常类似的方式将其添加到文件中.
任何帮助深表感谢.我尝试过很多不同的东西,要么出错,要么从文件中删除默认行.
谢谢!
我遇到过使用这两种方法进行配置管理的人.
每种方法的优缺点是什么?
如果我在配置对象中存储了很多变量,那么在执行节点应用程序之前,我是否必须在upstart脚本中逐个设置它们?
我在playbook.yml中添加了一个名为common的角色,并且配置失败并显示以下消息:
TASK [common : Host is present] ************************************************
==> cd: fatal: [localhost]: FAILED! => {"failed": true, "msg": "the field 'args' has an invalid value, which appears to include a variable that is undefined. The error was: 'unicode object' has no attribute 'host_ip'\n\nThe error appears to have been in '/vagrant/ansible/roles/common/tasks/main.yml': line 7, column 3, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n\n- name: Host is present\n ^ here\n"}
Run Code Online (Sandbox Code Playgroud)
这是roles/common/tasks/main.yml
失败的特定任务的内容
- …
Run Code Online (Sandbox Code Playgroud) configuration provisioning configuration-management ansible ansible-playbook
SaltStack状态定义后空括号的目的是什么?
例如,在SaltStack文档中的某处你会看到:
vim:
pkg.installed: []
Run Code Online (Sandbox Code Playgroud)
然而,例如,执行vim
安装也可以这样表达:
vim:
pkg.installed
Run Code Online (Sandbox Code Playgroud)
..实际上,SaltStack文档中的其他地方是主流格式.那么空括号表示什么呢?明确声明该语句没有其他参数?
我只是看到一个非常奇怪的事情,我有一个同事,他们使用他们的configspec设置来查看主分支,今天早上他可以看到某个文件夹中的文件,但他并没有更改该视图以及所有突然他们走了。
我查看了文件夹的节点,将其与以前的版本进行比较时,它表明在最新版本的main中删除了大约4个文件(大概在一个月前进行了检查,距离问题开始很久了) )。
所以我的问题是,为什么在比较节点而不是在文件夹中时可以看到它们?
我将我正在查看的节点与之前的节点进行了比较,因此并没有像我选择另一个我未查看的节点那样。
这真令人困惑。
编辑:这仅在此一个文件夹中发生,另一个如视图中的10个文件夹都可以访问,并且文件也可见(它们都分支相同)。
EDIT#2:这样他们就可以通过复制configspec,停止视图,启动视图以及将configspec复制回去,再次看到文件,(现在我听说是第二个人了)。又回来了,但那仍然无法解释什么原因。
我已经在perforce中提交了一个文件,其他用户提交的更改已在合并中恢复.
变化没有冲突.
是他们的一种方式,我可以得到用户的改变.意味着还原恢复.
如何使用新的更改列表编号再次提交更改列表?
我正在试图弄清楚如何向Jenkins添加管理构建,以管理一些构建,以及如何将参数从管理构建路径到子构建.
我阅读了许多关于配置管理的文章,但我真的不了解这个配置的应用.
它是自己的软件吗?比如,在conf文件中更改主机等......?
或者在应用程序"主机"上?在这种情况下,使用这种软件的目的是什么,知道我们通常使用"准备使用"的docker容器?
ansible ×2
perforce ×2
salt-stack ×2
agile ×1
automation ×1
bash ×1
build ×1
clearcase ×1
config.json ×1
env ×1
jenkins ×1
jinja2 ×1
node.js ×1
operational ×1
provisioning ×1
puppet ×1
python ×1
yaml ×1