Ansible是一种agentless(基于ssh)的自动化运维工具,部署简单,只需要在主控端部署ansible环境,被控端无需做任何操作
安装
ubuntu: apt-get install -y ansible
centos: yum -y install ansible
配置
1.ls /etc/ansible
2.ssh 秘钥认证 ssh-keygen -t rsa ssh-copy-id root@agent_host_ip
3.添加被管理主机 vim /etc/ansible/hosts
4.hosts主机文件:/etc/ansible/hosts
使用
-m 后面接调用module的名字
-a 后面接调用module的参数
-u 指定远程主机以username运行命令
-s linux系统下的sudo命令
-C 只检查不实际执行
-e 引用外部参数
-i 指定仓库列表, 默认/etc/ansible/hosts
--list-host: 列出执行主机列
常用模块
ansible-doc -l 列出ansible支持的模块
ansible-doc ping 查看该模块帮助信息
1)command:ansible的默认模块 ---ansible client -m cimmane -a "free -m" "查看client分组主机内存使用情况
2)script:在远处主机执行主控端存储的shell脚本文件---ansible client -m script -a "/home/test.sh 12 34"远程执行本地脚本
3)shell:和command相同,但是shell支持管道符----ansible client -m shell -a "/home/test.sh" 执行远程脚本
4).copy :实现主控端向目标株距拷贝文件,类似于scp---ansible client -m copy -a "src=/home/test.sh dest=/tmp/ owner=root group=root mode=0755"
playbook
Target :hosts:是一个或多个主机的patterns remote_user:账户名 sudo: 设为yes的时使用root权限
Variabler: vars 变量名:变量值 vars_files 变量文件
Task: name:输出到屏幕的信息 action:执行的动作
使用
ansible-palybook deploy.yml 执行playbook.yml
ansible-playbook playbook.yml --list-hosts 查看脚本影响哪些hosts
ansible-playbook playbook.yml -f 10 并行执行脚本
栗子
1.shell
- name: copy
hosts: "{{ hosts }}"
remote_user: root
tasks:
- name: shell
shell: cp /usr/test.war /tmp/test.war
2.copy
- hosts: host
tasks:
- name: copy
copy: src=/tmp/test.txt dest=/usr/test.txt