Articles of ansible

滚动更新与傀儡,ansible或织物

我有一些docker服务器与他们之前的负载均衡器。 现在我想更新我的应用程序没有停机。 当一个docker停机并且不再可达时,负载均衡器将自动从列表中删除,所以这不是问题。 主要的问题是避免停机时间:所以,我必须确保一次只有一个docker重新启动 – 或者确保至less有N个docker在线! 目前,我正在使用一个简单的bash脚本,我需要手动等待一个docker重新上线,然后再重新启动下一个docker,等等。 现在bash对于这种东西并不是最理想的,我希望有更好的工具可以使整个任务自动化。 例如,如果第n个docker在线,我可以使用一个简单的ping URL http://jetty-number-n.com/ping来响应OK(200)。 我怎么能解决这个任务,并用哪个工具? 感谢@ceejayoz我find了可靠的滚动更新 。 但它仍然不是最理想的,因为我需要设置一个固定的超时时间。

Ansible重复angular色

我使用Ansible来pipe理一些运行多个虚拟主机的网站和数据库服务器。 对于每个网站,我需要将数据库angular色分配给dbservers组,将网站angular色分配给Web服务器组。 所以我的剧本看起来像这样: – hosts: dbservers roles: – { role: database, vhost: 'host1.com', db: 'customdb' } – { role: database, vhost: 'other.com' } – hosts: webservers roles: – { role: website, vhost: 'host1.com', db: 'customdb' } – { role: website, vhost: 'other.com' } 这个效果很好,但是因为我不得不两次重复一切,所以这很糟糕。 从默认值(如本例中的vhost host1.com上的db)更改某些参数时,这是特别容易出错的。 有没有办法写这个,所以我可以有一个具有所有必要参数的虚拟主机列表,并自动将不同的angular色添加到每个虚拟主机条目的不同主机组?

多数据中心Ansible负载均衡器模板

我将现有的多数据中心设置的pipe理迁移到Ansible,但我不确定什么是最好的build模方法,因为我是新手。 我有三个数据中心D1,D2和D3。 在每一个,相同的configuration重复相同的: 绑定到公共IP的nginx负载平衡器 (lb.D [n]) 两个应用程序服务器 (如[1-2] .D [n])仅从本地负载平衡器接收stream量 数据库服务器 (db.D [n])从这两个应用程序服务器读取的从属(只读) 数据库 。 我到目前为止所做的主机文件看起来像这样: # DC1 ———– [dc_1_webservers] 10.43.0.10 [dc_1_appservers] 10.43.0.20 10.43.0.21 [dc_1_dbservers] 10.43.0.30 [dc_1:children] dc_1_webservers dc_1_appservers dc_1_dbservers # DC2 ———– [dc_2_webservers] 10.43.10.10 [dc_2_appservers] 10.43.10.20 10.43.10.21 [dc_2_dbservers] 10.43.10.30 [dc_2:children] dc_2_webservers dc_2_appservers dc_2_dbservers # DC3 ———– [dc_3_webservers] 10.43.20.10 [dc_3_appservers] 10.43.20.20 10.43.20.21 [dc_3_dbservers] 10.43.20.30 [dc_3:children] […]

Ansible:如何按主机运行一个任务主机?

在游戏层面,我们有serial: 1 ,让我们一次运行整个游戏。 但是我还没有find一个简单的方法来完成这个任务。 如果相关任务没有执行正确的locking(无论出于何种原因),这一点尤其重要。 一个明显的答案是把这个任务放在自己的位置上。 但是这对angular色没有帮助。 (不得不使用angular色扮演游戏中的serial: 1并不是很直观。)

Ansible playbook上传并执行一个python脚本

我的手册如下: – hosts : mygroup user : user sudo : yes tasks : – name : Copy script copy : 'src=/home/user/Scripts/logchecker.py dest=/opt/root2/logchecker.py owner=root group=root mode=755' – name : Execute script command : '/usr/bin/python /opt/root2/logchecker.py' file upload正在工作,但执行失败。 即使我能够在服务器上没有任何问题的情况下执行脚本。 我做错了什么?

在Ansible中重用任务

在Ansible中,是否有可能在一个文件中定义一组任务,然后从其他剧本中运行选定的任务? 该文档描述了如何包含和重用任务列表,有没有办法只运行选定的任务,而不是完整的列表?

什么“localhost | FAILED =>缺less密码“是什么意思? 我怎么能通过它?

我有一个在virtualbox中设置的Ubuntu 14.04虚拟机,我试图按照这些指示。 https://serversforhackers.com/an-ansible-tutorial 当我到达模块部分,并尝试使用此命令安装nginx。 在/ etc / ansible / hosts中将“local”设置为“localhost” ansible local -s -m shell -a 'apt-get install nginx' 我得到以下错误: localhost | FAILED => Missing become password 我search谷歌的方式来通过这个,但我不明白我做错了什么。 这是服务器操作系统的全新安装,唯一的安装完成在本教程中。

在可靠部署期间validationnginx.conf

我有一个单一的Ansibleconfiguration服务器运行一些网站。 我的Ansible任务大致如下: – name: site nginx config template: src="nginx-site.conf.j2" dest=/etc/nginx/conf.d/{{item.name}}.conf owner=root group=root mode=0444 with_items: sites notify: restart nginx – name: nginx conf template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf owner=root group=root mode=0444 notify: restart nginx 我想使用Ansible模板模块的validate参数来调用nginx -t ,并确保我的新configuration在语法上是有效的。 它适用于主要的nginx.conf: template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf owner=root group=root mode=0444 validate="/usr/sbin/nginx -c %s -t" 但它似乎没有拿起对特定于站点的configuration文件的更改。 validate网站特定的模板不起作用,因为他们需要包装在一个http指令是有效的。 我能做些什么来检查这些特定于站点的文件的有效性?

创build用户,如果不存在Ansible

我想确保一个给定的用户总是存在于一个系统中,所以只有当它不存在时才创build 我目前的任务是: – name: Create default user action: user name={{ user }} groups={{ group }} state=present 但是,当用户已经存在时会引发错误,那么如何避免用户帐号已经存在的错误呢?

Ansible:主持人出现在多个小组中,并且两个小组的任务相同。 任何方式来运行一次任务?

我有一个看起来像这样的剧本: — – hosts: group1 roles: – role1 – role2 – hosts: group2 roles: – role2 – role3 现在说我有一个有这样的条目的主机文件: [group1] host1.example.com [group2] host1.example.com Ansible将在role2 TWICE中为host1.example.com运行任务,因为它出现在两个组中,并且每个都有role2分配给它们。 我怎样才能使Ansible认识到它有两次相同的作用,所以它只应该运行一次?