逆时针 2020-05-30
1)ansible基于ssh基础的配置管理、部署和任务执行系统
2)anisble是一个非常简单的模型驱动的配置管理,多节点部署和远程任务执行系统。Ansible作品通过SSH,不需要安装任何软件或守护进程在远程节点。扩展模块可以用任何语言编写
① 模块化:调用特定的模块,完成特定的任务
② 基于Python语言开发,由paramiko、pyyaml和jinja2三个核心库实现
③ 部署简单:agaentless不用代理程序
④ 支持自定义模块
⑤ 强大的playbook机制
1)yum -y install ansible #用yum安装ansible
2)安装成功后执行rpm -ql ansible #查看目录文件
/etc/ansible/ansible.cfg #ansiblede 配置文S件 /etc/ansible/hosts #主机清单 /etc/ansible/ansible-playbook #程序 /etc/ansible/ansible_plugins/ #插件目录
3)配置主机清单
定义group组名,组名中包括主机名或者主机ip,可以任意定义group,并且主机可以在不同组内重复定义(前提条件是hosts与该主机进行了密钥对认证)
查看模块用法: ansible-doc -s 模块名
① ping模块:
ansible webservers1[all|webservers2] -m ping
② Command模块:
Ansible webservers -m command -a “ifconfig” #直接执行命令,但不识别管道符
③ shell模块 :在远程主机上调用shell解释器执行命令,支持shell各种功能,比如管道符。
Ansible webservers -m shell -a “echo ‘123’ | passwd --stdin test” #给test用户设置密码为123,但是如果用command模块,该命令则不能执行成功。
④ copy模块: 复制文件到远程主机与生成文件
ansible all -m copy -a “src=/etc/my.cnf dest=/tmp/my.cnf.bak mode=640” #复制源文件到目标文件并指定权限
ansible all -m copy -a “content=’hello\nworld\n’ dest=/tmp/ansible.file mode=777” #生成文件到目标文件并指定权限
⑤ file模块: 设置文件属性,设置目标文件状态
ansible webservers2 -m file -a “path=/tmp/my.cnf.bak owner=mysql” #设置/tmp/my.cnf.bak文件的属主为mysql
ansible webservers2 -m file -a “path=/tmp/my.cnf.bak state=absent” #state指定目标状态,目标文件状态为absent,即为删除
ansible webservers2 -m file -a “path=/tmp/test.ansible state=directory” #state目标文件状态为目录,则为创建新文件
ansible webservers2 -m file -a “path=/usr/sbin/nginx src=/usr/local/nginx/sbin/nginx state=link” #创建软连接