自动运维工具 ANSIBLE(三)

ping command shell script 模块

ansible websrvs -m ping  //判断websrvs组主机是否存活

ansible websrvs -m command -a "hostname"
ansible all -m command -a "chdir=/data ls"
ansible all -m command -a "removes=/etc/fstab cat /etc/issue" // /etc/fstab存在就执行 命令 cat /etc/issue
// command模块不支持 $ ; < > ! 等

ansible all -m shell -a "echo centos|passwd --stdin zs"
 ansible all -m shell -a "sed -ri '/^enabled=/c\enabled=1' /etc/yum.repos.d/epel.repo"
 // shell模块不支持$

// 被控端可以执行ansible服务器的脚本
 ansible all -m script -a "/data/user.sh"

copy fetch file hostname 模块

copy模块  //将ansible的文件或文件夹拷贝到远程主机
	src 支持递归,相对路径或绝对路径都可以
	dest 必须设置,必须是绝对路径,不存在的一个路径
	owner
	mode
	group
	
ansible websrvs -m copy -a "src=/etc/fstab dest=/data"
再执行一次不会覆盖,也不会改变
只要原文件稍有变化,就会覆盖,也就是执行成功
ansible websrvs -m copy -a "src=/etc/passwd dest=/data/fstab mode=600 owner=bin"
ansible websrvs -m copy -a "src=/etc/issue dest=/data/fstab mode=600 owner=bin backup=yes" //目标文件存在,就备份
ansible websrvs -m copy -a "content='line1\nline2\nline3' dest=/data/test.txt" //自定义文件内容拷贝到远程主机

fetch模块 //从远程主机提取文件至主控端,不能抓取文件夹
	src 远程主机的文件
	dest 主控制的文件夹
ansible all -m fetch -a "src=/var/log/messages dest=/data"

file模块 //改变文件的属性,可以创建软、硬链接
		path 管理的文件的路径,必须 
		src 
		state [link,hard,absent]
		
ansible all -m file -a "path=/data/fstab mode=700"
ansible websrvs -m file -a "src=/data/fstab path=/data/fstab.link state=link" //对fstab文件创建软链接fstab.link
ansible websrvs -m file -a "src=/data/fstab path=/data/fstab.link2 state=hard" //对fstab文件创建硬链接fstab.link
ansible all -m file -a "path=/data/f1.txt state=touch" //创建空文件f1.txt 
ansible all -m file -a "path=/data/f1.txt state=absent" //删除文件f1.txt 
ansible websrvs -m file -a "path=/data/ state=absent" //清空目录里的所有内容
ansible 192.168.209.9 -m file -a "state=directory dest=/data/testdir" //建立空文件夹 testdir

hostname模块  //改主机名,不会改/etc/hosts文件
ansible 192.168.209.39 -m hostname -a "name=node39"

unarchive archive cron 模块

unarchive模块 //解包解压缩
将 ansible 的打包文件在本地解压缩后传到远程主机上 copy=yes 
将远程的压缩包解压到远程的主机上 copy=no 
	sec
	dest
	mode
tar zcvf /data/sysconfig.tar.gz /etc/sysconfig/
ansible all -m unarchive -a "src=/data/sysconfig.tar.gz dest=/data/ copy=yes"
ansible all -m copy -a "src=/data/sysconfig.tar.gz dest=/data"
ansible all -m file -a "path=/data/etc state=absent"
ansible all -m unarchive -a "src=/data/sysconfig.tar.gz dest=/data copy=no"

archive模块 //打包压缩
	path
	dest
	format

ansible all -m archive -a "path=/etc/sysconfig dest=/data/sysconfig.tar.bz2 format=bz2"

cron模块
	minute
	hour
	day
	month
	weekday
	name
	job
	state [present,obsent]
	
ansible all -m cron -a "name='display hostname' job='/usr/bin/hostname' minute=*/5 "	
ansible all -m cron -a "name='display hostname' job='/usr/bin/hostname' minute=*/5 disabled=true" //就是在这条计划任务加#
ansible all -m cron -a "name='display hostname' job='/usr/bin/hostname' minute=*/5 disabled=false" //启用这条计划任务
ansible all -m cron -a "name='display hostname' state=absent "

yum service user group 模块

yum模块

ansible all -m yum -a "name=httpd state=present"
ansible all -m yum -a "name=httpd state=absent"
ansible appsrvs -m yum -a "name=lsof disablerepo=base enablerepo=sohu" //安装临时启用sohu源,禁用base源

service模块
 ansible all -m service -a "name=httpd state=started enabled=yes"
 ansible all -m service -a "name=httpd state=stopped"
 ansible all -m shell -a "sed -ri '/^Listen/c\Listen 8080' /etc/httpd/conf/httpd.conf"
 ansible all -m service -a "name=httpd state=restarted"
 ansible all -m shell -a "ss -ntl|grep 8080"
 
 user模块
	name
	comment
	uid
	home
	group
	system
	state [present,absent]
	remove [yes,no]
	create_home [yes,no]
	shell 
ansible all -m user -a "name=mysql system=yes shell=/bin/false home=/data/mysql state=present"  //家目录也被创建了
ansible all -m shell -a "getent passwd mysql"
ansible all -m user -a "name=mysql state=absent remove=yes"
ansible all -m user -a "name=mysql system=yes home=/data/mysql shell=/sbin/nologin create_home=no state=present"

group模块

ansible all -m group -a "name=group1 state=present system=yes"
ansible all -m group -a "name=group1 state=absent"

setup template 模块

ansible-doc -s setup
	filter
ansible 192.168.209.9 -m setup  //列出这台机器上的各种变量
ansible 192.168.209.9 -m setup -a "filter=ansible_fqdn"
ansible 192.168.209.9 -m setup -a "filter=ansible_*total*"


template模块 //只应用于 playbook
利用 ansible的template模块,安装运行httpd服务


vim /ect/ansible/hosts
[websrvs]
192.168.209.29 httpd_port=8029
192.168.209.39 httpd_port=8039

/data/playbook/templates/httpd.conf.j2 
ansible服务器安装httpd服务,将配置文件拷贝并改名为 /data/playbook/templates/httpd.conf.j2 
vim /data/playbook/templates/httpd.conf.j2
	Listen {{ httpd_port }}

/data/playbook/httpd.yml

---
- hosts: websrvs
  remote_user: root

  tasks:
   - name: install
     yum: name=httpd state=present
     tags: install
   - name: config
     #copy: src=/data/httpd.conf dest=/etc/httpd/conf/
     template: src=httpd.conf.j2 dest=/etc/httpd/conf/httpd.conf
     notify: restart httpd
     tags: config
   - name: service
     service: name=httpd state=started
     tags: service

  handlers:
   - name: restart httpd
     service: name=httpd state=restarted
	 
ansible-playbook httpd.yml

发布了18 篇原创文章 · 获赞 0 · 访问量 866

猜你喜欢

转载自blog.csdn.net/studywinwin/article/details/104065965