Ansible常见模块介绍
本节内容:[*]ansible命令基础
[*]常见模块举例
一、ansible命令基础
语法:
ansible <host-pattern> [-f forks] [-m module_name] [-a args]
[*]host-pattern:这次的命令对哪些主机生效;
[*]-f forks:启动的并发线程数,就是一次并行处理多少主机;
[*]-m module_name:要使用的模块;
[*]-a args:模块特有的参数。
常见的模块:
[*]user
[*]yum
[*]copy
[*]cron
[*]command:这是默认的模块,表示在被管理主机上运行一个命令。对于command模块,-a不再是指定参数,而是命令本身。
[*]shell
二、常见模块举例
1. /etc/ansible/hosts配置文件内容
https://images2017.cnblogs.com/blog/1132141/201709/1132141-20170928134228762-610512059.png
2. command模块
command模块是默认的模块,表示在被管理主机上运行一个命令。对于command模块,-a不再是指定参数,而是命令本身。所以这个模块有个缺陷,运行的命令中不能使用变量或者参数。
示例:
# ansible nginx -m command -a "date"
https://images2017.cnblogs.com/blog/1132141/201709/1132141-20170928134334637-1582960878.png
# ansible mysql -m command -a "tail -3 /etc/passwd"
https://images2017.cnblogs.com/blog/1132141/201709/1132141-20170928134400887-1492452290.png
3. cron模块
cron模块可以让每一个被管理节点能够自动生成一个定期任务计划。查看cron模块的用法:
# ansible-doc -s cron
https://images2017.cnblogs.com/blog/1132141/201709/1132141-20170928134810465-1682120138.png
示例:
# ansible mysql -m cron -a 'minute="*/10" job="/usr/bin/echo hello" name="test cron job"'
https://images2017.cnblogs.com/blog/1132141/201709/1132141-20170928134849544-712571481.png
注意:
[*]所有的参数可以用""包含起来
[*]day之类的参数没有指定,默认都是*
[*]默认state参数的值为present
https://images2017.cnblogs.com/blog/1132141/201709/1132141-20170928134939840-1922385656.png
4. user模块
user模块实现用户账号管理。查看user模块的用法:
# ansible-doc -s user
几个主要参数:
[*]name=:用户名
[*]uid:用户的uid
[*]group:所属组,即私有组
[*]groups:附加组。
[*]state:状态。
示例:
# ansible mysql -m user -a 'name="jack"'
https://images2017.cnblogs.com/blog/1132141/201709/1132141-20170928135107747-1375335915.png
# ansible mysql -m user -a 'name="jack" state=absent'
https://images2017.cnblogs.com/blog/1132141/201709/1132141-20170928135133684-1573618705.png
5. group模块
group模块:组管理。查看group模块的用法:
示例:
# ansible-doc -s group
https://images2017.cnblogs.com/blog/1132141/201709/1132141-20170928135223856-1789591138.png
# ansible mysql -m group -a 'name=mysql gid=306 system=yes'
https://images2017.cnblogs.com/blog/1132141/201709/1132141-20170928135249184-415154313.png
6. copy模块
copy模块实现文件复制。查看copy模块的用法:
# ansible-doc -s copy
几个主要参数:
[*]src=:指明源文件本地路径。可以是绝对路径,也可以是相对路径。可以不使用src,使用content。就是说用content内容来生成文件。
[*]dest=:定义远程目标文件路径,只能使用绝对路径。
[*]content=:可以不使用src,使用content。就是说用content内容来生成文件。
示例:
# ansible mysql -m copy -a 'src=/etc/fstab dest=/tmp/fstab.ansible owner=root mode=640'
https://images2017.cnblogs.com/blog/1132141/201709/1132141-20170928135647309-1176303047.png
# ansible mysql -m copy -a 'content="Hello World\nGood boy" dest=/tmp/test.txt owner=root mode=640'
https://images2017.cnblogs.com/blog/1132141/201709/1132141-20170928135721419-1550030050.png
7. file模块
file模块可以设定文件属性,还可以创建文件的符号链接。查看file模块的用法:
# ansible-doc -s file
几个重要参数:
[*]path=:指明对哪个文件做管理。也可以使用dest和name。
[*]创建文件的符号链接:src=:指明源文件,path=:指明符号链接文件路径
示例:
# ansible mysql -m file -a 'owner=root group=mysql mode=644 path=/tmp/test.txt'
https://images2017.cnblogs.com/blog/1132141/201709/1132141-20170928135904340-595158278.png
# ansible mysql -m file -a 'path=/tmp/test.link src=/tmp/test.txt state=link'
https://images2017.cnblogs.com/blog/1132141/201709/1132141-20170928135940294-516091355.png
8. ping模块
ping模块测试指定主机是否能连接。查看ping模块的用法:
# ansible-doc -s ping
示例:
# ansible nginx -m ping
https://images2017.cnblogs.com/blog/1132141/201709/1132141-20170928140041184-444145432.png
9. service模块
service模块是管理服务的。查看service模块的用法:
# ansible-doc -s service
https://images2017.cnblogs.com/blog/1132141/201709/1132141-20170928140121653-1226946523.png
几个重要参数:
[*]enabled=:是否开机自动启动,取值为true或false;
[*]name=:服务名字;
[*]state=:状态,取值有started,stoped,restarted。
示例:
# ansible 172.16.7.151 -m service -a 'enabled=true name=httpd state=stopped'
https://images2017.cnblogs.com/blog/1132141/201709/1132141-20170928140246497-399566237.png
10. shell模块
和command模块类似,但是可以使用变量。用于执行一些复杂的命令。查看shell模块的使用方法:
# ansible-doc -s shell
示例:
# ansible mysql -m user -a 'name="test"'
[iyunv@node1
~]# ansible mysql -m command -a 'echo wisedu | passwd --stdin test'
[iyunv@node1
~]# ansible mysql -m command -a 'tail -1 /etc/passwd'
https://images2017.cnblogs.com/blog/1132141/201709/1132141-20170928140358919-789327694.png
# ansible mysql -m shell -a 'echo wisedu | passwd --stdin user1'
[iyunv@node1
~]# ansible mysql -m command -a 'tail -1 /etc/shadow'
https://images2017.cnblogs.com/blog/1132141/201709/1132141-20170928140430028-309561447.png
所以一旦有管道、变量之类的,你最好使用shell模块,而不要用command模块。
11. script模块
script模块将本地脚本复制到远程主机并运行之。查看script模块的用法:
# ansible-doc -s script
示例:
# vim test.sh
#
/bin/bash
echo "hello world" >/tmp/nba.txt
[iyunv@node1
~]# chmod +x test.sh
[iyunv@node1
~]# ansible mysql -m script -a '/root/test.sh'
https://images2017.cnblogs.com/blog/1132141/201709/1132141-20170928140605012-1475568656.png
12. yum模块
yum模块管理程序包。查看yum模块的用法:
# ansible-doc -s yum
几个重要参数:
[*]name=:指定要安装的程序包,可以带上版本号,否则安装最新版本;
[*]state=:present表示安装,absent表示卸载。
示例:
# ansible mysql -m yum -a 'name=ksh'
https://images2017.cnblogs.com/blog/1132141/201709/1132141-20170928140710340-828452295.png
13. setup模块
setup模块:收集远程主机的facts。ansbile在管理每一个主机时,这些主机在被运行管理命令之前,会首先向ansible节点报告自己主机当前的各种可能被ansible主机用到的状态信息,如操作系统版本、ip地址等信息,这些信息都是以变量的形式,ansible主机可以在jinjia2中调用,为不同的服务器生成不同的配置文件。
# ansible mysql -m setup
https://images2017.cnblogs.com/blog/1132141/201709/1132141-20170928140754981-1381547687.png
页:
[1]