标签:信息 状态 connect 帮助 核心 enabled 系统 自带 组成
自动化运维之AnsibleAnsible可以看作是基于模块进行工作的框架结构,批量部署能力就是由Ansible所运行的模块实现的。简而言之Ansible是基于“模块”完成各种“任务”的。Ansible基本构架由六个部分组成:
(1)、连接插件connection plugins:负责和被监控端实现通信;
(2)、host inventory主机清单:指定操作的主机,是一个配置文件里面定义监控的主机;
(3)、Core modules核心模块:是Ansible自带的模块,使用致谢模块将资源分发到被管理主机,使其执行特定任务或匹配特定的状态;
(4)、Custom modules自定义模块:用于完全模块功能的补成,可借助相关插件完成记录日志、发送邮件等功能。
(5)、playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。
(6)、Asible core核心引擎。
角色 | IP地址 | 组名 |
---|---|---|
控制主机 | 192.168.190.130 | |
被管理主机 | 192.168.190.128 | test01 |
被管理主机 | 1982.168.190.131 | test02 |
yum install -y epel-release #安装epel源
yum install ansible -y
ansible --version #查看ansible版本
yum install tree -y
tree /etc/ansible/ #树状结构展示文件夹
/etc/ansible/
├── ansible.cfg #ansible的配置文件
├── hosts #ansible的主仓库,用于存储需要管理的远程主机的相关信息
└── roles #角色
cd /etc/ansible
vim hosts #配置主机清单
[test01]
192.168.190.128
[test02]
192.168.190.131
ssh-keygen -t rsa #基于SSH秘钥的连接
ssh-copy-id root@192.168.190.128 #配置秘钥对验证
ssh-copy-id root@192.168.190.131
ssh-agent bash #免交互代理
ssh-add
例:在被管理的主机上执行data命令,显示被管理主机的时间,有三种执行命令的方式去管理写入主机清单中的主机:
(1)、指定ip执行date
ansible 192.168.192.128 -m command -a ‘date‘
(2)、指定分类执行date
ansible test01 -m command -a ‘date‘
ansible test02 -m command -a ‘date‘
(3)、所有hosts主机执行date命令
ansible all -m command -a ‘date‘
(4)、如果不加-m模块,则默认运行command模块
ansible all -a ‘ls /‘
ansible-doc -s cron #查看cron模块信息
ansible test01 -m cron -a ‘minute="*/1" job="/bin/echo heihei" name="test cron job"‘ #添加任务计划
ansible test01 -a ‘crontab -l‘ #查看任务
ansible test01 -m cron -a ‘name="test cron job" state=absent‘ #移除计划任务,假如该计划任务没有取名字,name=None即可可
ansible test01 -m user -a ‘name="test001"‘ #创建用户test001
ansible test01 -m command -a ‘tail /etc/passwd‘ #查看添加的用户
ansible test01 -m user -a ‘name="test01" state=absent‘ #删除用户test001
nsible test01 -m group -a ‘name=mysql gid=306 system=yes‘ #创建mysql组
ansible test01 -a ‘tail /etc/group‘ #查看组
ansible test01 -m user -a ‘name=test001 uid=306 system=yes group=mysql‘ #创建test001用户添加到mysql组中
ansible test01 -a ‘tail /etc/passwd‘ #查看用户
ansible test01 -a ‘id test001‘ #查看用户的属组
(1)、例:将本地文件/etc/fstab复制到被管理主机的/opt/fstab.back,将所有者设置为root,权限设置为640;
ansible test001 -m copy -a ‘src=/etc/fstab dest=/opt/fstab.back owner=root mode=640‘
ansible test001 -a ‘ls -l /opt‘ #查看详细信息
ansible test001 -a ‘cat /opt/fstab.back‘ #查看内容
(2)、将“hello heihei!”写入到/opt/fstab.back文件中;
ansible test001 -m copy -a ‘content="hello heihei!"
dest=/opt/fstab.back‘ #将hello heihei!写入/opt/fstab.back
ansible test001 -a ‘cat /opt/fstab.back‘ #查看内容
ansible test01 -m file -a ‘owner=mysql group=mysql mode=644 path=/opt/fstab.back‘ #设置文件/opt/fstab.back的属主为mysql,属组为mysql,权限为644
ansible test01 -m file -a ‘path=/opt/fstab.link src=/opt/fstab.back state=link‘ #设置/opt/fstab.link为/opt/fstab.back的链接文件
ansible test01 -m file -a "path=/opt/fstab.back state=absent" #删除/opt/fstab.back文件
ansible all -m ping
ansible test02 -a ‘systemctl status httpd‘
#查看test02服务器httpd运行状态
ansible test02 -m service -a ‘enabled=true name=httpd state=started‘ #启动httpd服务,并设置为开机自动启动
ansible mysql -m shell -a ‘echo abc123|passwd --stdin mysql‘ #创建用户使用无交互模式给用户设置密码
例:编写一个本地脚本test.sh,复制到被管理主机上运行
vim test.sh #编写脚本
#!/bin/bash
echo "hello ansible from script"> /opt/script.txt
chmod +x test.sh #赋予执行权限
ansible test01 -m script -a ‘test.sh‘ #将脚本复制到test01上
cat /opt/script.txt #到test01上查看
ansible test01 -m yum -a ‘name=zsh‘ #安装zsh软件包
ansible test01 -m yum -a ‘name=zsh state=absent‘ #卸载zsh软件包
ansible tets01 -m setup //获取test01组主机的facts信息
标签:信息 状态 connect 帮助 核心 enabled 系统 自带 组成
原文地址:http://blog.51cto.com/13659182/2154003