我目前正在使用Ansible 1.7.2.我有以下测试剧本:
---
- hosts: localhost
tasks:
- name: set fact 1
set_fact: foo="[ 'zero' ]"
- name: set fact 2
set_fact: foo="{{ foo }} + [ 'one' ]"
- name: set fact 3
set_fact: foo="{{ foo }} + [ 'two', 'three' ]"
- name: set fact 4
set_fact: foo="{{ foo }} + [ '{{ item }}' ]"
with_items:
- four
- five
- six
- debug: var=foo
Run Code Online (Sandbox Code Playgroud)
第一个任务设置一个事实,即列表中包含一个项目.后续任务将附加更多值附加到该列表.前三个任务按预期工作,但最后一个没有.这是我运行时的输出:
PLAY [localhost] **************************************************************
GATHERING FACTS ***************************************************************
ok: [localhost]
TASK: [set fact …Run Code Online (Sandbox Code Playgroud) 我有一个ansible playbook,我想在一台机器上注册的变量在另一台机器上可用.
在我的情况下,我想localhost在这种情况下 运行命令git rev-parse --abbrev-ref HEAD,所以我可以记下当前的git分支和sha1,并注册这个输出,所以我可以在以后工作任何机器时参考它该main集团在第二个上场.
但是,我不清楚如何在localhost上注册变量,所以我可以从main访问它.当我尝试在第二次播放中访问变量时,我收到以下消息:
TASK: [debug msg={{ app_git_sha1.stdout }}] ***********************************
fatal: [main] => One or more undefined variables: 'app_git_sha1' is undefined
Run Code Online (Sandbox Code Playgroud)
这是我正在使用的剧本.有什么明显我应该做的吗?
---
- hosts: localhost
connection: local
gather_facts: no
tasks:
- name: register current branch
command: git rev-parse --abbrev-ref HEAD
register: git_branch
sudo: no
when: vagrant
tags:
- debugsha
- debug: msg={{ git_branch.stdout }}
tags:
- debugsha
- name: register the SHA1 of the branch being deployed
command: git …Run Code Online (Sandbox Code Playgroud) 我正在使用CloudFront缓存和分发当前存储在标准存储类S3中的所有缩略图.由于CloudFront仅缓存原始数据并且每24小时访问它们,因此使用比标准更便宜的存储类是有意义的:标准不常访问(IA)或减少冗余(RR).但我不确定哪一种更合适且更具成本效益.
标准IA具有最便宜的存储(比标准类便宜58%,比RR便宜47%),但比标准和RR要贵60%.但是,在计算成本时,存储在Standard-IA类中的128kb以下的所有文件都会舍入到128kb,这适用于我的大多数缩略图.
同时,RR级的存储仅比标准级便宜20%,但其请求成本比标准IA低60%.
我不确定哪一个在实践中最具成本效益,并且会感谢任何有经验的人都能提供一些反馈.
我的loginuser是user1,我想用root执行playbook.我怎样才能做到这一点.如果我在cmdline中使用它不会像这样工作
ansible-playbook main.yaml -i hosts --user=git -k --become-user=root --ask-become-pass --become-method=su
Run Code Online (Sandbox Code Playgroud)
请告诉我如何实现这一点.
name: Install and Configure IEM
hosts: rhel
ansible_become: yes
ansible_become_method: su
ansible_become_user: root
ansible_become_pass: passw0rd
tasks:
- name: Creating masthead file path
file: path=/etc/opt/BESClient state=directory
- name: Creating install directory
Run Code Online (Sandbox Code Playgroud) 我们在AWS EC2中运行了一些SolrCloud和ZooKeeper设置,并且在大多数情况下它们运行顺利,但是在最近我们的一个ZooKeeper节点发生故障后,我开始想知道是否有任何一种让客户端解决ZooKeeper的方法是比别人好.我们的客户端是基于Java的,使用Solr 4.1 java客户端.
最初我们使用hostfile条目来识别ZooKeepers,但/etc/hosts考虑到AWS的性质,确保条目是最新的,这样做变得非常繁琐.所以我们现在通过Route53使用自定义DNS来识别ZooKeepers.但是我们仍然单独识别ZooKeeper节点,因此我们当前在启动客户端时指定了这一点:
-Dsolr.zookeeperHosts='zk-1.mydomain.com:2181,zk-2.mydomain.com:2181,zk-3.mydomain.com:2181'
Run Code Online (Sandbox Code Playgroud)
主机zk-1.mydomain.com等只是每个ZooKeeper EC2实例的DNS的CNAME.所以现在如果亚马逊强迫我们重新启动ZooKeeper,导致它获得一个新的IP地址,那么当DNS记录更新时,客户端最终将获得新的IP.
我的问题与想知道是否有更好的方法来处理这个问题有关.假设我们想要在混合中添加额外的ZooKeepers,所以我们有5个节点的法定数量而不是3个.(我实际上想要这样做.)拥有包含所有的单个DNS循环记录会更有意义吗ZooKeepers在其中并将该单个DNS名称传递给客户端?
例如,成立了DNS记录zookeepers.mydomain.com的CNAME指向zk-1.mydomain.com,zk-2.mydomain.com并且zk-mydomain.com,然后简单地PAS这给我的客户:
-Dsolr.zookeeperHosts='zookeepers.mydomain.com:2181'
Run Code Online (Sandbox Code Playgroud)
这样,当我将新的ZooKeepers添加到集群时,我可以简单地添加另一个CNAME记录,zookeepers.mydomain.com而不必担心更新所有客户端上的配置.
Solr客户端是否足够智能,可以使用包含多条记录的DNS记录?具体来说,如果一个ZooKeeper碰巧关闭,并且客户端试图连接到它,客户端是否会知道再次查询DNS以获取下一个ZooKeeper的IP并尝试与之通信?
我在mysql数据库中有一个包含50个左右用户的相当明确的列表.用户表中的所有内容都如下所示:
mysql> select user,host,password from user where host = '1.2.3.4';
+--------+---------+----------+
| user | host | password |
+--------+---------+----------+
| user1 | 1.2.3.4 | *XXX... |
| user2 | 1.2.3.4 | *YYY... |
| user3 | 1.2.3.4 | *ZZZ... |
etc.
Run Code Online (Sandbox Code Playgroud)
我想要做的是为每个用户添加第二个条目,以便他们也可以使用相同的密码从10.%连接并从10.%授予完全访问权限,但保留现有授权.
有没有办法可以在mysql中完成所有这些操作(出于自动化目的)或者我是否必须编写一个转储用户和密码哈希值的脚本然后为10.%主机发出新的授权语句?
我有一个大约一年前创建的 Docker 镜像。Dockerfile 包含:
FROM docker:stable
如何确定stable构建映像时所引用的 docker 映像的实际版本?
编辑:简而言之,我想做的是替换FROM docker:stable为FROM docker:X.Y.ZXYZ 是一年前最初构建映像时“稳定”所指向的版本标签。
是否可以将rsyslog日志记录到具有不同TLS配置的多个服务器?我们当前正在使用以下内容登录到本地syslog服务器:
$DefaultNetstreamDriver gtls
$DefaultNetstreamDriverCAFile /etc/pki/rsyslog/ca.pem
$DefaultNetstreamDriverCertFile /etc/pki/rsyslog/local-cert.pem
$DefaultNetstreamDriverKeyFile /etc/pki/rsyslog/local-key.pem
$ActionSendStreamDriverAuthMode anon
$ActionSendStreamDriverMode 1
*.* @@10.50.59.241:6514
Run Code Online (Sandbox Code Playgroud)
我们现在正在设置日志记录到第三方,并希望在那里使用TLS.他们声明我们应该像这样设置rsyslog:
$DefaultNetstreamDriverCAFile /path/to/their/ca.crt
$ActionSendStreamDriver gtls
$ActionSendStreamDriverMode 1
$ActionSendStreamDriverAuthMode x509/name
$ActionSendStreamDriverPermittedPeer *.theirhost.theirdomain
*.* @@theirhost.theirdomain:6514
Run Code Online (Sandbox Code Playgroud)
我想我可以简单地将CA组合到一个文件中,并将DefaultNetstreamDriverCAFile设置为该文件.但是,如果我只是将剩下的第二组选项添加到我的rsyslog.conf的底部,那么允许的对等体会导致与第一个主机发生冲突.那么有没有办法配置rsyslog(我们目前使用7.4.8)对两个不同的目标使用截然不同的TLS设置?
Guava EventBus文档说 "一般情况下,处理程序不应抛出.如果这样做,EventBus将捕获并记录异常.这很少是错误处理的正确解决方案,不应该依赖;它仅用于帮助在开发过程中发现问题."
如果您知道可能发生某些异常,则可以使用EventBus注册SubscriberExceptionHandler并使用它来处理这些异常.
但是如果发生未处理的异常会发生什么?通常情况下,我希望一个未处理的异常"冒泡"调用链.使用SubscriberExceptionHandler时,我可以访问事件处理程序中抛出的原始异常,我只想重新抛出它.但我无法弄清楚如何.
那么,无论是否使用SubscriberExceptionHandler,如何确保事件处理程序中的意外异常不会被"吞噬"?
任何帮助将不胜感激.
我正在使用 Spark 流将聚合输出作为镶木地板文件写入使用 SaveMode.Append 的 hdfs。我创建了一个外部表,如:
CREATE TABLE if not exists rolluptable
USING org.apache.spark.sql.parquet
OPTIONS (
path "hdfs:////"
);
Run Code Online (Sandbox Code Playgroud)
我的印象是,在外部表的情况下,查询也应该从新添加的镶木地板文件中获取数据。但是,似乎新写入的文件没有被提取。
每次删除并重新创建表都可以正常工作,但不是解决方案。
请建议我的表如何也有来自较新文件的数据。
我正在尝试在Google Maps SDK for iOS文档中运行街景示例,并收到以下错误:
` - [NSThread gtm_performBlock:]:无法识别的选择器发送到实例0x1d55d1f0.***由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:' - [NSThread gtm_performBlock:]:无法识别的选择器发送到实例0x1d55d1f0'.libc ++ abi.dylib:terminate调用抛出异常.
奇怪的是,我可以让街景视图在某些项目中工作而不是其他项目.我已经尝试了Google 1.4.3和1.4.2框架,但仍然遇到此错误.知道是什么原因引起的吗?
我想将我的私有git服务器的ssh密钥添加到带有ansible 1.9.3的known_hosts文件,但它不起作用.
我的剧本中有以下条目:
- name: add SSH host key
known_hosts: name='myhost.com'
key="{{ lookup('file', 'host_key.pub') }}"
Run Code Online (Sandbox Code Playgroud)
我已将/etc/ssh/ssh_host_rsa_key.pub复制到host_key.pub,文件如下:
ssh-rsa AAAAB3NzaC1... root@myhost.com
Run Code Online (Sandbox Code Playgroud)
如果我运行我的剧本我总是收到以下错误消息:
TASK: [add SSH host key]
******************************************************
failed: [default] => {"cmd": "/usr/bin/ssh-keygen -F myhost.com -f /tmp/tmpe5KNIW", "failed": true, "rc": 1}
Run Code Online (Sandbox Code Playgroud)
我做错了什么?
我想知道为什么我们需要一个新的类实例?
int coin;
Random randomNum = new Random();
coin = randomNum.Next(0, 2);
Run Code Online (Sandbox Code Playgroud)
我必须这样做...... Random randomNum = new Random();
为此...randomNum.Next(0, 2)
为什么我不能......
coin = random.Next(0, 2);
为什么我必须首先给它一个变量"randomnum"?
ansible ×4
amazon-s3 ×1
apache-spark ×1
c# ×1
deployment ×1
docker ×1
dockerfile ×1
event-bus ×1
google-maps ×1
guava ×1
hive ×1
ios ×1
java ×1
mysql ×1
parquet ×1
rsyslog ×1
sdk ×1
solr ×1
solrcloud ×1