Ansible 基础入门(模块介绍)

时间:2024-03-04 17:33:58

一,Ansible 介绍

 Ansible 与我们的运维工作密不可分,特别是中小企业,更需要这样的运维工具,我们要学一些Ansible的安装和一些基本概念,然后我们会开始研究一些真正有意思的东西 – playbook,配置管理,部署以及语法编排.我们将会学习如何使用/usr/bin/ansible执行ad-hoc并行命令,我们还会学习ansible的核心有什么样的模块可供使用.当然以后你也可以写你自己的模块.

二,Ansible 安装

安装方式一般有三种,可以网上去找安装方式,本人推荐 yum install ansible -y 安装方式

三,查看安装版本

ansible --version

四,修改配置,添加主机,设置分组

 

 [websrvs]

192.168.139.140 http_port=81
192.168.139.141 http_port=82

[websrvs:vars]
nodename=www
domainname=mobiyun.com

[dbsrvs]
192.168.139.138
192.168.139.140

[appsrvs]
192.168.139.14[0:1]

======================================================================================================

ansible常用模块介绍:

模块参数查看:ansible-doc -s 模块名 或 ansible-doc 模块名

一: Command 在远程主机执行命令,默认模块,可忽略 -m 选项

 执行方式: ansible all -a \'ls /data/\'

二:shell 模块,和Command相似,用shell 主要用于执行命令

 执行方式:ansible all -m shell -a \'netstat -tunlp | grep 80\'

三:script 模块,运行脚本

ansible all -m shell -a \'/root/ansible/host.sh\'

四:copy 模块,从服务器复制文件到客户端

执行方式:

ansible all -m copy -a \'src=/root/ansible/config dest=/etc/selinux/config backup=yes\'
ansible all -m copy -a \'src=/etc/shadow dest=/data/ mode=000 owner=cyh\'
ansible]# ansible all -m copy -a \'content="hello\nthonks\n" dest=/data/f2\' (生成content内容到目标主机f2文件)

五:fetch 模块,客户端取文件至服务器端,目录可以先tar

执行方式:

ansible all -m fetch -a \'src=/var/log/messages dest=/data1\'

打包:ansible all -m shell -a \'tar jcf log.tar.xz /var/log/*.log\' (远程打包)

           ansible all -m fetch -a \'src=/root/log.tar.xz dest=/data1/\' (拉取到本地)

注:

1 专门打包模块 ansible-doc archive

2 解包模块 ansible-doc unarchive

六:file 模块,设置文件属性

ansible all -m file -a \'name=/data/f3 state=touch\' (创建f3文件)
ansible all -m file -a \'name=/data/f3 state=absent\' (删除f3文件)
ansible all -m file -a \'name=/data/dir1 state=directory\' (创建dir1文件夹)
ansible all -m file -a \'name=/data/dir1 state=absent\' (删除dir1文件夹)
ansible all -m file -a \'src=/etc/fstab dest=/data/fstab.link state=link\' (创建fstab的软连接)
ansible all -m file -a \'dest=/data/fstab.link state=absent\' (删除软链接)

七:hostname 模块,管理主机名

执行方式:

         ansible 192.168.139.138 -m hostname -a \'name=node2-test\' 修改系统主机名为node2-test

八:cron 计划任务模块

执行方式:

        ansible all -m cron -a \'minute=* weekday=1,3,5 job="/usr/bin/wall FBI warning" name=warningcron\'  创建计划任务

 

ansible all -m cron -a\'disabled=true job="/usr/bin/wall FBI warning" name=warningcron\' 注释计划任务,disabled=yes也可以
ansible all -m cron -a\'disabled=false job="/usr/bin/wall FBI warning" name=warningcron\' 取消注释计划任务,disabled=no 也可以
ansible all -m cron -a \'job="/usr/bin/wall FBI warning" name=warningcron state=absent\' 删除计划任务

九:yum 软件安装模块,管理包

执行方式:

ansible all -m yum -a \'name=vsftpd\' 安装vsftpd服务
ansible all -m yum -a \'list=installed\' 查看已经安装的包
ansible all -m yum -a \'name=vsftpd state=removed\' 卸载vsftpd服务
ansible all -m yum -a \'name=vsftpd,memcached,httpd\' 装多个服务,以逗号隔开
ansible all -m yum -a \'name=vsftpd,memcached,httpd state=absent\' 删除多个包
ansible all -m yum -a \'name=/root/erlang-solutions-1.0-1.noarch.rpm\' 安装指定目录的rpm包(若是加上disable_gpg_check=yes就是忽略key检查 )
ansible all -m yum -a \'name=dstat update_cache=yes\' 更新缓存

 十:service模块,管理服务

执行方式:

ansible websrvs -m service -a \'name=vsftpd state=started enabled=yes\' 启动vsftpd服务
ansible websrvs -m service -a \'name=vsftpd state=stopped\' 停止vsftpd服务
ansible websrvs -m service -a \'name=vsftpd state=stopped enabled=false\' 停止禁用开机启动

十一:user 模块,管理用户

执行方式:

ansible websrvs -m user -a \'name=nginx shell=/sbin/nologin system=yes home=/var/nginx groups=root,bin uid=80 comment="nginx service"\' 创建nginx用户,设置相关参数
ansible websrvs -m user -a \'name=nginx state=absent remove=yes\' 删除nginx用户,包括家目录

 十二:group 模块,管理组

执行方式:

        ansible websrvs -m group -a \'name=nginx system=yes gid=80\' 创建nginx 组

 

十三:setup 模块,通常用来查询ansible自带的变量

执行方式:

ansible websrvs -m setup -a \'filter=ansible_hostname\'

 

总结:ansible模块几乎每天都有在更新,以上为常见的模块,以此为基础,后面工作中还需要不断取学习。