由于工作需要,经常需要把目标节点获得的信息写入执行节点文件日志. 所以经常用到delegate_to和connection,而local_action写法难看,基本不用. delegate_to和connection最后达到的目标是一致的,就是把目标机器上的{{ }}大括号标记的变量在被代理连接的节点上调用. 示例 --- - name: connection hosts: controller vars: tmplog: /tmp/connection.log tasks: - name: c…
完成发布流程如下 first 修改nginx 配置文件下线 web1-2 使用 delegate_to 将默认hosts指定为 nginx主机 使用remote_user 将用户 锁定为 root second 对web1-2组内机器进行代码更新和服务重启 third 对 web1-2进行回挂同时摘取 web3-5 使用 delegate_to 将默认hosts指定为 nginx主机 使用remote_user 将用户 锁定为 root forth 对web 3-5进行代码更新 使用 deleg…
Ansible默认只会创建5个进程并发执行任务,所以一次任务只能同时控制5台机器执行.如果有大量的机器需要控制,例如20台,Ansible执行一个任务时会先在其中5台上执行,执行成功后再执行下一批5台,直到全部机器执行完毕.使用-f选项可以指定进程数,指定的进程数量多一些,不仅会实现全并发,对异步的轮训poll也会有正面影响. Ansible默认是同步阻塞模式,它会等待所有的机器都执行完毕才会在前台返回.Ansible可以采取异步执行模式.异步模式下,Ansible会将节点的任务丢在后台,每台被…
ansible kubectl connection plugin ansible是目前业界非常火热的自动化运维工具.ansible可以通过ssh连接到目标机器上,从而完成指定的命令或者操作. 在kubernetes集群中,因为并不是所有的服务都是那么容器化.有时候也会用到ansible进行一些批量运维的工作. 一种方式是可以在容器中启动ssh,然后再去连接执行.但是并不是所有的容器都会启动ssh. 针对于这种情况,我想到了直接用kubectl进行连接操作,因此开发了kubectl的connec…
基本环境:docker基于centos7 在docker里面安装ansible 不管是在root还是普通用户下执行 ansible all -m ping  都报如下错误: 172.20.1.1 | UNREACHABLE! => { "changed": false, "msg": "Failed to connect to the host via ssh: Control socket connect(/home/hadoop/.ansible…
Kubespray 是 Kubernetes incubator 中的项目,目标是提供 Production Ready Kubernetes 部署方案,该项目基础是通过 Ansible Playbook 来定义系统与 Kubernetes 集群部署的任务,具有以下几个特点: 可以部署在 AWS, GCE, Azure, OpenStack以及裸机上. 部署 High Available Kubernetes 集群. 可组合性(Composable),可自行选择 Network Plugin (…
安装部署: 1. 使用vagrant 准备3太虚拟机,自己使用Vbox 准备3太也可以. 2. 按照 https://github.com/gjmzj/kubeasz 安装. 3. 使用letsencrypt + harbor + nginx 搭建dockerhub. (正在进行) 准备好环境后的安装过程: root@k8s1:/etc/ansible# ansible-playbook 01.prepare.yml PLAY [deploy] *************************…
ansible ssh到目标机器 时好时坏,报错:  SSH Error: ssh_exchange_identification: Connection closed by remote host 咋搞? 解决办法简单粗暴: /etc/init.d/ssh restart 啥原因?不知道! 可能是虚拟机太傻叉! 也有可能使用了跳板机,然后设置了forks数目不为1 参考资料: http://wangmukun.blog.51cto.com/651644/202747 http://www.ju…
ansible 任务委派功能delegate_to run_noce: true  在一个主机上面只执行一次一个任务. ,如果没有这个参数的话,每个playbook中的组的主机都会执行一次. 我们有的时候有这种需求,在运行一个playbook的时候里面的task是分配到一组服务器中去分别执行的,但是如果我们想要在其中某一个task执行的时候是在另外一个不属于这个组里面的机器中去执行.这个时候就需要用到ansible的委派功能. delegate_to比如:1.a b c d e 5个机器是一个组…
一.  Ansible 介绍Ansible是一个配置管理系统configuration management system, python 语言是运维人员必须会的语言, ansible 是一个基于python 开发的(集合了众多运维工具 puppet.cfengine.chef.func.fabric的优点)自动化运维工具, 其功能实现基于ssh远程连接服务, ansible 可以实现批量系统配置,批量软件部署,批量文件拷贝,批量运行命令等功能, 除了ansible之外,还有saltstack…
Ansible 默认只会对控制机器执行操作,但如果在这个过程中需要在 Ansible 本机执行操作呢?细心的读者可能已经想到了,可以使用 delegate_to( 任务委派 ) 功能呀.没错,是可以使用任务委派功能实现.不过除了任务委派之外,还可以使用另外一外功能实现,这就是 local_action 关键字. - name: add host record to center server local_action: shell 'echo "192.168.1.100 test.xyz.co…
Play 指令 说明 accelerate 开启加速模式 accelerate_ipv6 是否开启ipv6 accelerate_port 加速模式的端口 always_run   any_errors_fatal 有任务错误时,立即停止 become 是否提权 become_flags 提权命令的参数 become_method 提权得方式 become_user 提权的用户 check_mode 当为True时,只检查,不做修改 connection 连接方式 environment 定义远…
最近接触了ansible工具,查找了一些资料,也做了一些总结.希望能给刚接触的新手带来一些帮助. 此总结有实际例子,大部分也是从实践中用到才逐一总结的. 当然可能肯定一定会存在一些错误和纰漏,还望大家具体实践时进一步熟悉了解. ansible本身的模块有几百个,按照官网的建议来说,不建议一次性学完. 我们需要一边学习一边实践一边总结.要经常查找官方文档. 官方文档如下: https://docs.ansible.com/ansible/latest/index.html Ansible学习 安装…
一.  Ansible 介绍Ansible是一个配置管理系统configuration management system, python 语言是运维人员必须会的语言, ansible 是一个基于python 开发的自动化运维工具, 其功能实现基于ssh远程连接服务, ansible 可以实现批量系统配置,批量软件部署,批量文件拷贝,批量运行命令等功能, 除了ansible之外,还有saltstack 等批量管理软件. Ansible能做什么? ansible可以帮助运维人员完成一些批量任务,或…
首先简单说明一下playbook,playbook是什么呢?根本上说playbook和shell脚本没有任何的区别,playbook就像shell一样,也是把一堆的命令组合起来,然后加入对应条件判断等等,在shell脚本中是一条一条的命令,而在playbook中是一个一个的task任务构成,每个task任务可以看做shell中的一条命令:shell脚本一般只是在当前服务器上执行,而playbook则是在不止一个服务器上执行,因此playbook需要在其中指定运行该playbook的服务器名. p…
原文  http://www.ibm.com/developerworks/cn/linux/1608_lih_ansible/index.html?ca=drs-   简介 Ansible 是一个系统自动化工具,可以用来做系统配管理,批量对远程主机执行操作指令.我自己使用 Ansible 也有一段时间了,这里总结了一些使用 Ansible 过程中使用的心得与大家分享. Ansible 性能优化 在使用 Ansible 的过程中,当管理的服务器数量增加时,不得不面对一个无法避免的问题执行效率慢,…
Play 指令 说明 accelerate 开启加速模式 accelerate_ipv6 是否开启ipv6 accelerate_port 加速模式的端口 always_run   any_errors_fatal 有任务错误时,立即停止 become 是否提权 become_flags 提权命令的参数 become_method 提权得方式 become_user 提权的用户 check_mode 当为True时,只检查,不做修改 connection 连接方式 environment 定义远…
1.加速模式运行playbook accelerate 对于使用ansible 1.5 及之后版本的用户,加速模式只在以下情况下有用处: (A) 管理红帽企业版 Linux 6 或者更早的那些依然使用 paramiko 的版本 (B) 像在文档中描述的那样:无法在 TTYs 中使用 sudo. #只需在你的 play 中添加 accelerate: true 即可使用加速模式: --- - hosts: all accelerate: true tasks: - name: some task…
一 本地执行 如果希望在控制主机本地运行一个特定的任务,可以使用local_action语句. 假设我们需要配置的远程主机刚刚启动,如果我们直接运行playbook,可能会因为sshd服务尚未开始监听而导致失败,我们可以在控制主机上使用如下示例来等待被控端sshd端口监听: - name: wait for ssh server to be running wait_for port: 22 host: "{{ inventory_hostname }}" search_regex:…
由于大部分互联网公司服务器环境复杂,线上线下环境.测试正式环境.分区环境.客户项目环境等造成每个应用都要重新部署,而且服务器数量少则几十台,多则千台,若手工一台台部署效率低下,且容易出错,不利后期运维,因此需要Ansible或者Saltstack来解决此问题. Ansible与Saltstack最大的区别是Ansible无需在被控主机部署任何客户端代理,默认直接通过SSH通道进行远程命令执行或下发配置,这里不作详细对比,直接使用Ansible.Ansible是DevOps项目基础工具之一,致力于…
不要未经书面许可转载 第三章是长,因为,我会分几个部分来翻译. Advanced Playbooks So far the playbooks that we have looked at are simple and just run a number of modules in order. Ansible allows much more control over the execution of your playbook. Using the following techniques,…
异步和轮询 Ansible 有时候要执行等待时间很长的操作,  这个操作可能要持续很长时间, 设置超过ssh的timeout. 这时候你可以在step中指定async 和 poll 来实现异步操作 async 表示这个step的最长等待时长,  如果设置为0, 表示一直等待下去直到动作完成. poll 表示检查step操作结果的间隔时长. 例1: --- - name: Test hosts: localhost tasks: - name: wair for shell: sleep 16 a…
一.Inventory 库存清单文件 1.Inventory 作用 Ansible 可以在同一时间针对多个系统设施进行管理工作.它通过选择Ansible 资源清单文件中列出的系统,该清单文件默认是在/etc/ansible/hosts,也可以使用 -i <path> 进行路径的指定.文件内的格式INI 风格,中括号内为分组名. 除了这个文件之后,还可以同时使用多个清单文件,可以动态的获取,也可以从外部获取外部库存清单文件.云平台上去拉取(如AWS,或者Cobbler 的API结合). 2.ho…
playbooks介绍 playbooks是 一个不同于使用Ansible命令行执行方式的模式,其功能更强大灵活.简单来说,playbook是一个非常简单的配置管理和多主机部署系统,不同于任何已经存在的模式,可作为一个适合部署复杂应用程序的基础.Playbook可以定制配置,可以按照指定的操作步骤有序执行,支持同步和异步方式.值得注意的是playbook是通过YAML格式来进行描述定义的. playbooks基础组件 Hosts:运行执行任务(task)的目标主机 remote_user:在远程…
项目前言 在上一篇博客<Jenkins+Git+Gitlab+Ansible实现持续化集成一键部署静态网站(一)--技术流ken>中已经详细讲解了如何使用这四个工具来持续集成自动化部署一个静态的网站. 如果大家可以熟练掌握以上内容,势必会在工作中减轻不小的工作量. 本篇博客将再次使用这四个工具结合freestyle和pipeline来完成动态网站的部署. 为了拓宽知识点,本篇博客将使用jenkins的两种常用方法来进行部署,如果你对pipeline还不熟悉,请参考我之前的博客<Jenki…
项目前言 之前已经写了一篇关于git和ansible的博客<Git+Gitlab+Ansible剧本实现一键部署Nginx--技术流ken>.关于git,gitliab,ansible在我以往的博客中都已经详细介绍,这里就不再赘述. 上一篇部署的nginx是一个静态的网站,本篇博客将使用这三个工具部署一个动态网站. 本项目将使用wordpress为例. 项目需求 需求一..使用gitlab创建项目 需求二. 使用ansible的roles实现一键化部署wordpress 每次部署需要备份之前的…
环境:vmware 虚拟化需求:如果业务部门一次提几十台甚至几百台虚拟机需求,一个个的手动创建肯定耗时 使用ansible vmware_guest 创建虚拟机,避免手动一台一台创建的纯手工 工作废话不多说,上代码 --- - hosts: localhost ## 在本机执行 gather_facts: No connection: local ## 本地连接 vars_files: - myvars.yml - vcenter.yml tasks: - name: Create a virt…
Inventory 主机清单文件 Ansible 可以对你的基础设施中多个主机系统同时进行操作.通过选择在Ansible的inventory列出的一部分主机来实现.inventory默认保存在/etc/ansible/hosts中.你可以通过指定 -i <path> 参数指定使用其他文件的路径. 不仅可以使用这个默认的配置文件,你也可以同时指定多个文件,或者从动态的或者云资源上来去inventory,详细可查看Dynamic Inventory.Ansible 2.4 引入了inventory…
一.Inventory 库存清单文件 1.Inventory 作用 Ansible 可以在同一时间针对多个系统设施进行管理工作.它通过选择Ansible 资源清单文件中列出的系统,该清单文件默认是在/etc/ansible/hosts,也可以使用 -i <path> 进行路径的指定.文件内的格式INI 风格,中括号内为分组名. 除了这个文件之后,还可以同时使用多个清单文件,可以动态的获取,也可以从外部获取外部库存清单文件.云平台上去拉取(如AWS,或者Cobbler 的API结合). 2.ho…
vmware_vm_facts模块使用示例 执行条件: 安装Pyvmimo:  pip install pyvmomi 方法一,直接编写单个yaml文件: - hosts: localhost # 注意这里使用的是 localhost gather_facts: True connection: local tasks: - name: Gather Facts of all vms in vCenter Server local_action: module: vmware_vm_facts…