自动化服务配置管理平台之-Ansible总结

Ansible架构:

    ansible是新出现的运维工具是基于Python研发的糅合了众多老牌运维工具的优点实现了批量操作系统配置、批量程序的部署、批量运行命令等功能。

和同类工具puppet和saltstack比起来优点是更易于管理,不需要安装客户端(通过ssh连接通信)

ansible搭建以及配置: 1.ansible的安装 #yum install ansible -y [root@wy-pe1 ~]# rpm -ql ansible | head /etc/ansible /etc/ansible/ansible.cfg        ansible的主配置文件 /etc/ansible/hosts            ansible的Host Inventoy文件 /etc/ansible/roles /usr/bin/ansible /usr/bin/ansible-doc            模块相关的命令 /usr/bin/ansible-galaxy     /usr/bin/ansible-playbook        playbook相关命令 /usr/bin/ansible-pull /usr/bin/ansible-vault 2.定义Host Inventory # vim /etc/ansible/hosts www.xxbandy.com            定义单个域名或主机 172.25.25.4             [webshosts]            定义一个服务群组(可以用来区分服务群组) 10.45.249.119 ansible_ssh_user=root ansible_ssh_pass=wyadmin 10.45.249.121 ansible_ssh_user=root ansible_ssh_pass=wyadmin 注意: ansible_ssh_user=root         定义ssh登录用户 ansible_ssh_pass=wyadmin    定义ssh登录密码 ansible_connection=ssh/local    定义主机连接类型 同时,必须主机必须记录过一次ssh的密码 通过隧道进行安全连接: xxbandy ansible_ssh_port=55555 ansible_ssh_host=172.25.25.250 ansible中可以使用range: www[01:90].xxbandy.com #ansible webshosts -a ‘/sbin/reboot’ -f 10     立即重启webshosts中的主机 3.测试各个模块 ansible命令最常用的用法: ansible <Host-partten> -m MOD -a 'command' 所支持的模块可以使用ansible-doc -l查看 ansible简单使用示例: 简单使用copy模块(注意,其中需要在各个主机上安装libselinux-python包) # ansible webshosts -m copy -a 'src=/root/command dest=/mnt'         10.45.249.119 | success >> {     "changed": false,     "checksum": "704ac4e439698bc9f1a314a9fce18fb658804d7c",     "dest": "/mnt/command",     "gid": 0,     "group": "root",     "mode": "0644",     "owner": "root",     "path": "/mnt/command",     "secontext": "system_u:object_r:mnt_t:s0",     "size": 79136,     "state": "file",     "uid": 0 } 10.45.249.121 | success >> {     "changed": true,     "checksum": "704ac4e439698bc9f1a314a9fce18fb658804d7c",     "dest": "/mnt/command",     "gid": 0,     "group": "root",     "md5sum": "b918049ba2652e9eb7bc1ad77e8cb8e4",     "mode": "0644",     "owner": "root",     "secontext": "system_u:object_r:mnt_t:s0",     "size": 79136,     "src": "/root/.ansible/tmp/ansible-tmp-1425651119.69-276531752760623/source",     "state": "file",     "uid": 0 } 表示文件已经向webshosts组内的主机同步成功 使用command或者shell模块进行远程调用系统命令: [root@wy-pe1 mnt]# ansible webshosts -m command -a 'date' 10.45.249.119 | success | rc=0 >> Fri Mar  6 22:15:09 CST 2015 10.45.249.121 | success | rc=0 >> Fri Mar  6 21:56:03 CST 2015 [root@wy-pe1 mnt]# ansible webshosts -m command -a 'df -h' 10.45.249.121 | success | rc=0 >> Filesystem            Size  Used Avail Use% Mounted on /dev/mapper/VolGroup-lv_root                        18G  917M   16G   6% / tmpfs                 238M     0  238M   0% /dev/shm /dev/sda1             477M   25M  427M   6% /boot 10.45.249.119 | success | rc=0 >> Filesystem            Size  Used Avail Use% Mounted on /dev/mapper/VolGroup-lv_root                        18G  936M   16G   6% / tmpfs                 238M     0  238M   0% /dev/shm /dev/sda1             477M   25M  427M   6% /boot 在控制端添加用户,user模块: 查看user模块的相关参数(ansible-doc user) # ansible webshosts -m user -a 'name=andy comment="ansible add use" uid=1001 password=andyxxb' 参数详解:name指定用户名      comment指定描述      uid指定用户ID(gid)      password指定用户密码      shell指定用户所拥有的shell      state=absent用来删除用户(只会删除本地用户,不会删除家目录) 实现ssh秘钥认证:(其实就是在ansible端进行key生成(ssh-keygen),然后使用copy模块进行同步文件) #ansible webshosts -m copy -a 'src=/root/.ssh/id_rsa.pub dest=/root' # ansible webshosts -m shell -a 'cat /root/id_rsa.pub >> /root/.ssh/authorized_keys' file模块:用来改变文件的权限和所属用户组;同时还可以创建目录(没有成功),删除文件等 # ansible webshosts -m file -a 'dest=/mnt/command mode=600 owner=xxb group=xxb ' 10.45.249.119 | success >> {     "changed": true,     "gid": 500,     "group": "xxb",     "mode": "0600",     "owner": "xxb",     "path": "/mnt/command",     "secontext": "system_u:object_r:mnt_t:s0",     "size": 79136,     "state": "file",     "uid": 500 } 10.45.249.121 | success >> {     "changed": true,     "gid": 502,     "group": "xxb",     "mode": "0600",     "owner": "xxb",     "path": "/mnt/command",     "secontext": "system_u:object_r:mnt_t:s0",     "size": 79136,     "state": "file",     "uid": 502 } 使用file模块进行创建目录:(mkdir -p) # ansible webshosts -m file -a "dest=/mnt/hello mode=755 owner=xxb group=xxb state=directory" 使用file模块进行删除文件 # ansible webshosts -m file -a 'dest=/mnt/command state=absent' 使用yum模块进行安装软件包,确定包已经安装,但是不进行udate操作: # ansible webshosts -m yum -a 'name=vsftpd state=installed'   注意(state=latest用来确保软件包是否为最新版本) 使用service模块进行确定服务的运行状态: #ansible webshosts -m yum -a 'name=httpd state=installed' # ansible webshosts -m service -a 'name=httpd state=restarted' 注意:state的状态为restarted,started,stoped

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Jed的技术阶梯

《Maven实战》全书总结

把MAVEN_HOME/conf/seettings.xml cp 到 ~/.m2/下,在.m2下的settings.xml中所作的配置就是用户级别的配置,而直...

46810
来自专栏CodeSheep的技术分享

centos7上elastic search安装填坑记

18260
来自专栏SpringBoot 核心技术

第二十一章:SpringBoot项目中的全局异常处理

88830
来自专栏流柯技术学院

CentOS下Zabbix安装部署及汉化

1.安装开发软件包 yum -y groupinstall "Development Tools"

18320
来自专栏张首富-小白的成长历程

用户相关的文件及命令

Linux system每个文件和进程,都需要对应一个用户和组, Linux system是通过UID和GID来识别用户和组的。用户名相当于人名,UID相当于×...

14240
来自专栏一个爱瞎折腾的程序猿

windows下react-native环境搭建

到android-studio下载SDK。 运行installer_r24.4.1-windows.exe安装、或zip解压出来的SDK Manager.ex...

1.5K20
来自专栏Java学习123

shell获取当前工作目录绝对路径

2.6K70
来自专栏云原生架构实践

JHipster生成单体架构的应用示例

因为这个例子是生成单体架构的应用,所以这里选择默认选项Monolithic application,也就是单体架构的应用。

1.2K20
来自专栏黑白安全

CVE-2018-5767路由器远程代码执行分析

参考信息:https://www.fidusinfosec.com/remote-code-execution-cve-2018-5767/

18440
来自专栏大闲人柴毛毛

深入理解Linux磁盘的奥秘

当我们想在系统里增加一块硬盘的时候,要做以下这四步工作: 对磁盘进行分区 对新建的分区进行格式化,目的是为了创建系统可用的文件系统 对新建的文件系统进行检验 将...

41780

扫码关注云+社区

领取腾讯云代金券