ansible使用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ansible使用相关的知识,希望对你有一定的参考价值。
参考技术A Ansible使用/etc/ansible/ansible.cfg 主配置文件 ansible的配置文件
/etc/ansible/hosts Inventory 要远程控制的主机列表
/usr/bin/ansible-doc 帮助文件
/usr/bin/ansible-playbook 指定运行任务文件
默认: /etc/ansible/hosts
inventory file可以有多个,且也可以通过Dynamic Inventory来动态生成。
参考解释例子ansible_ssh_host将要连接的远程主机名.与你想要设定的主机的别名不同的话,可通过此变量设置.ansible_ssh_host=192.169.1.123ansible_ssh_portssh端口号.如果不是默认的端口号,通过此变量设置.ansible_ssh_port=5000ansible_ssh_user默认的 ssh 用户名ansible_ssh_user=cxpadminansible_ssh_passssh 密码(这种方式并不安全,我们强烈建议使用 --ask-pass 或 SSH 密钥)ansible_ssh_pass=’123456’
ansible2.0,ansible_ssh_user, ansible_ssh_host, ansible_ssh_port已经改变为ansible_user, ansible_host, ansible_port。具体参考官网
http://docs.ansible.com/ansible/latest/intro_inventory.html
常见的模块及使用参考: ansible基本使用教程 - 陈小跑 - 博客园
命令行方式一次只能执行单条命令,如果命令量较多,可以使用playbook的方式。 https://segmentfault.com/a/1190000038230424
playbook使用yaml格式编写。组成结构如下:
举例如下:
使用参考: https://segmentfault.com/a/1190000038230424
"msg": "Using a SSH password instead of a key is not possible because Host Key checking is enabled and sshpass does not support this. Please add this host's fingerprint to your known_hosts file to manage this host."
通常情况下,通过&指定的后台任务在终端退出后会自动退出执行。一般来说,加上nohup即可在后台一直执行。但在使用ansible时,发现 ansible all -m shell -a 'nohup cmd &' 命令无法在后台一直执行。后来想了个办法,将命令写入脚本,然后通过执行脚本来实现。
脚本内容为
ansible命令为 ansible all -m script -a 'bash xxx.sh' 。sleep的原因是退出太快可能脚本没跑起来就退出了。
ansible的使用
ansible主要分为单条命令和组命令(即配置后缀为名yml的文件,使用ansible-playbook执行)的使用,以下分别对两者进行说明。如不会安装ansible,请参考我的文章 centos7安装与配置ansible。
测试环境:
ansible:10.0.0.2010.
node1:10.0.0.19 //如果不是22端口,直接再后面加端口即可,如:10.0.0.19:6666
node2:10.0.0.21 //如果不是22端口,也可以使用别名,如:jumper ansible_ssh_port=6666 ansible_ssh_host=10.0.0.19
node3:10.0.0.22
在/etc/ansible/hosts下添加组:
[group01]
10.0.0.19
10.0.0.21
10.0.0.22
一、单条命令的使用
1、 ping group01组电脑:sudo ansible group01 -m ping
2、 查看sshd进程:sudo ansible group01 -m shell -a "ps -aux|grep sshd"
3、 复制文件:执行复制文件前需先安装在本机安装liblinux-python:
a、 在客户上安装liblinux-python:sudo yum install liblinux-python -y
b、 复制:sudo ansible group01 -m copy -a "src=/home/jeff/ansible/httpd.conf dest=/home/jeff/"
4、 安装软件:sudo ansible group01 -m shell -a "yum install wget -y"
二、配置yml文件
1、 示例1:安装httpd
a、 vim /home/jeff/ansible/web.yml,添加内容如下:
- hosts: group01 //主机组,在/etc/ansible/hosts定义
remote_user: root //客户机执行任务所用的用户
tasks: //任务
- name: install httpd //任务描述
command: yum install httpd -y //调用ansible的command模块安装httpd
- name: provide httpd.conf //任务描述
copy: src="/home/jeff/ansible/httpd.conf" dest="/etc/httpd/conf/httpd.conf" //调用ansible的copy模块,将事先准备好的httpd.conf文件复制到指定目录下
tags: conf //给此任务打标记,可单独执行标记的任务
notify: //文件内容变更通知
- server restart //通知到指定的任务
- name: server start //任务描述
service: name=httpd state=started enabled=true //调用ansible的service模块,安装并设置开机启动
handlers: //定义接受关注的资源变化后执行的动作
- name: server restart //任务描述
service: name=httpd state=restarted //当关注的资源发现变化后调用service模块,采取的响应动作
b、 执行任务:sudo ansible-playbook web.yml
PS:在配置yml文件时,不能使用tab键缩进,只能使用空格键,且级别要对齐,这很重要,切记!!!
以上是关于ansible使用的主要内容,如果未能解决你的问题,请参考以下文章
ansible自动化运维详解ansible的安装部署参数使用清单管理配置文件参数及用户级ansible操作环境构建
ansible自动化运维详解ansible的安装部署参数使用清单管理配置文件参数及用户级ansible操作环境构建