首页 > 其他分享 >1、ansible

1、ansible

时间:2023-12-07 11:58:21浏览次数:23  
标签:name etc state ansible m01 root

1、安装

配置腾讯yum源,阿里云报403,注意本地yum源也需要,有依赖

[epel]
name=epel
#baseurl=http://mirrors.aliyun.com/epel/7/x86_64
baseurl=https://mirrors.cloud.tencent.com/epel/7/x86_64/
gpgcheck=0
enable=1

yum clean all && yum makecache

yum -y install ansible

2、配置ansible管理节点和主机的连接

ssh-keygen

ssh-copy-id 20.81.11.81

ssh-copy-id 20.81.11.82
ansible all -m ping

3、ansible模块

ansible语法

ansible [主机清单] -m 模块 -a "参数"

ping模块

配置ansible主机清单
主机清单配置文件/etc/ansible/hosts

验证ansible
[root@m01 ~]# ansible oldboy -m ping

command命令模块

-a     就是基础命令模块常用命令使用
例子:
ansible [主机清单] -a "cat /etc/passwd"

shell命令模块

-m shell 对于偏复杂的命令使用,比如加cat 1|grep 1
例子:
ansible [主机清单] -m shell -a "cat 1|grep 1"

yum安装模块

-m yum  顾名思义用来安装的
参数:
name    ---指定要安装的软件包名称,如果有多个,用","隔开
state   ---指定使用yum的方法
 installed,present   ---安装软件包
 removed,absent      ---移除软件包
 latest               ---安装最新软件包
例子:
批量安装httpd和卸载
安装:ansible web -m yum -a "name=httpd state=installed"
卸载:ansible web -m yum -a "name=httpd state=removed"

copy推送文件模块

-m copy  推送文件,追加文件内容,附加文件权限
参数:
src           --- 推送数据的源文件信息
dest          --- 推送数据的目标路径
backup        --- 对推送传输过去的文件,进行备份
content       --- 直接批量在被管理端文件中添加内容
group         --- 将本地文件推送到远端,指定文件属组信息
owner         --- 将本地文件推送到远端,指定文件属主信息
mode          --- 将本地文件推送到远端,指定文件权限信息
例子:批量推送文件
ansible [主机清单] -m copy -a "src=/fzl/1 dest=/fzl"
例子2:批量送文件并备份
ansible [主机清单] -m copy -a "scr=/fzl/1 dest=/fzl backup=yes"   如果/fzl/有1这个文件就备份
例子3:添加文件追加内容(覆盖慎用)并附带文件用户和组和权限
ansible [主机清单] -m copy -a "content='rsync_backup:1' dest=/etc/rsync.password owner=root group=root mode=600"

service模块

-m service   相当于systemctl
参数:
name        # 定义要启动服务的名称
state       # 指定服务状态是停止或是运行,停止和运行指令要写成过去时
 started     # 启动
 stopped     # 停止
 restarted   # 重启
 reloaded    # 重载
enabled         # 是否让服务开启自启动
例子:
批量启动httpd服务,并添加一个首页,通过浏览器访问
ansible web -m service -a "name=httpd state=started enabled=yes"

group模块

-m group  
- gid
    设置组id
= name
    需要管理的组名
- state
    执行状态,absent 删除  
			  present 创建(默认)
例1:创建组名www,并设置gid 666
[root@m01 ~]# ansible all -m group -a "name=www gid=666"

例2:修改www组的gid为888
[root@m01 ~]# ansible all -m group -a "name=www gid=888"

例3:删除www组
[root@m01 ~]# ansible all -m group -a "name=www gid=888 state=absent"

user模块

-m user
= name
    用户名
- uid
    uid
- group
    gid或groupname
- state
    执行状态,absent 删除  
			 present 创建(默认)
- shell
    登录shell,/bin/bash(默认),/sbin/nologin
- create_home
    创建用户时,是否创建家目录,create_home=no
- password
    用户密码,不能使用明文,需用使用openssl加密后的密码

例1:创建一个用户oldboy,指定uid 60000,gid 666,并设置密码为123
注意:password不能使用明文,需要加密,password的加密值需用使用双引号
# -1使用MD5进行加密 -stdin 非交互式
[root@m01 ~]# echo "123"| openssl passwd -1 -stdin
$1$YmQSB.yb$EeZphDZ7ror/8dASNSM.c1
[root@m01 ~]# ansible backup -m user -a 'name=oldboy uid=60000 group=666 password="$1$DlBUYXav$VhZv.G3YmzG8T85sbfP3b1"'

例2:创建一个程序用户www,指定uid666 gid666 不让登录 不创建家目录
[root@m01 ~]# ansible all -m user -a "name=www uid=666 group=666 shell=/sbin/nologin create_home=no"

file模块

= path
    目标文件路径
	dest(和path等价)
	name(和path等价)
- src
    源文件路径
- owner
    属主
- group
    属组
- mode
    权限
- state
	absent 删除
	directory 创建目录
	file 修改文件属性(默认)
	touch 创建文件
	link hard 链接
- recurse
    递归
	recurse=yes

例1:创建目录/data和/backup,属主666,属组666,递归
[root@m01 ~]# ansible all -m file -a "path=/data owner=666 group=666 recurse=yes state=directory"

例2:创建文件/etc/rsync.password,权限600
[root@m01 ~]# ansible all -m file -a "path=/etc/rsync.password state=touch mode=600"

例3:对/etc/hosts做个软链接,到/tmp/hosts
[root@m01 ~]# ansible all -m file -a "src=/etc/hosts path=/tmp/hosts state=link"

总结:file模块仅适合创建目录,修改所属和权限,创建链接,除开这些操作的其他文件管理都通过copy模块实现

mount模块

= path
    挂载点
- src
    需要挂载的设备
- fstype
    挂在设备的文件系统
	iso9660 光驱
	ext4
	xfs
	nfs
	cifs samba的共享文件系统
	ntfs windows磁盘文件系统
- opts
    挂载属性
		noatime
		noexec
		nosuid
= state
    挂载动作
		present     # 开机挂载,仅将挂载配置写入/etc/fstab
		mounted     # 挂载设备,并将配置写入/etc/fstab
		unmounted   # 卸载设备,不会清除/etc/fstab写入的配置
		absent      # 卸载设备,会清理/etc/fstab写入的配置
		
例1:通过nfs实现网络文件共享(综合小实验)
1)安装nfs
[root@m01 ~]# ansible nfs -m yum -a "name=nfs-utils state=installed"

2)启动服务
[root@m01 ~]# ansible nfs -m service -a "name=rpcbind state=started"
[root@m01 ~]# ansible nfs -m service -a "name=nfs state=started"

3)修改配置文件
方法一:在m01创建配置文件,使用copy模块推给nfs(建议使用)

[root@m01 ~]# mkdir -p /server/conf
[root@m01 ~]# echo '/data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)' >/server/conf/exports
[root@m01 ~]# ansible nfs -m copy -a "src=/server/conf/exports dest=/etc/"
方法二:在m01上直接使用copy模块,推送文件内容
[root@m01 ~]# ansible nfs -m copy -a "content='/data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)' dest=/etc/exports"

4)创建目录,用户,并修改所属
通过user group file模块来实现,参考上面的例子

5)重载配置文件
[root@m01 ~]# ansible nfs -m service -a "name=nfs state=restarted"

6)在web上挂载nfs的共享目录
[root@m01 ~]# ansible web -m mount -a "src=172.16.1.31:/data path=/var/www/html fstype=nfs state=mounted"

script模块

1)写个脚本,创建用户,并配置密码
[root@m01 scripts]# cat 1.sh 
#!/bin/bash
useradd oldgirl
echo 123 |passwd --stdin oldgirl &>/dev/null && echo     "创建密码成功"
2)运行脚本
[root@m01 ]# ansible all -m script -a "/server/scripts/1.sh"


cron模块

1)推送脚本至每台受控端
[root@m01 ]# ansible all -m file -a "path=/server/scripts state=directory mode=700"
[root@m01 ]# ansible all -m copy -a "src=/server/scripts/rsync_backup.sh dest=/server/scripts"

2)创建计划任务
- name
    描述,必须要写,如果不写,默认为None,会导致无法指定删除某条计划任务
- job
    任务(命令)
- state
    执行状态,absent 删除  
			  present 创建(默认)
disabled      注释定时任务
    true      关闭
    false     开启
    
- minute
    Minute when the job should run ( 0-59, *, */2, etc )
    [Default: *]
- hour
    Hour when the job should run ( 0-23, *, */2, etc )
    [Default: *]
- day
    Day of the month the job should run ( 1-31, *, */2, etc )
    (Aliases: dom)[Default: *]		
- month
    Month of the year the job should run ( 1-12, *, */2, etc )
    [Default: *]
- weekday
    Day of the week that the job should run ( 0-6 for Sunday-Saturday, *, etc )
    (Aliases: dow)[Default: *]
 
例子:每天的凌晨1点执行rysnc_bakcup.sh
[root@m01 ]# ansible all -m cron -a "name='Rsync Backup' hour=1 minute=0 job='/bin/sh /server/scripts/rsync_backup.sh &>/dev/null'"

例子:注释定时任务
ansible all -m cron -a "disabled=true job='/bin/sh /server/scripts/rsync_backup.sh &>/dev/null' name='Rsync Backup'"


unarchive模块

功能:解压缩
-m unarchive
unarchive模块有两种解压缩方式,一种是在ansible主机上解压缩后传到主机清单上的服务器。
第二种是在主机清单上解压缩。

参数:
src  需要解压缩我文件(绝对路径)
dest 解压缩后指定的目录
copy
    yes
    no
选择解压缩方式:一和二(上面有一和二是区别)
mode:设置解压缩后的文件权限

例子:
ansible pms -m unarchive -a 'src=/srv/tomcat8/apache-tomcat-8.0.29.tar.gz dest=/usr/local copy=no mode=0755'
 


标签:name,etc,state,ansible,m01,root
From: https://www.cnblogs.com/mmdln/p/17881365.html

相关文章

  • Linux_315_Ansible模块之定时任务管理
    ansible的cron模块来添加任务1、添加定时任务,每5分钟进行时间同步ansibleyu-mcron-a"name=ntp_cronjob='/usr/sbin/ntpdatentp.aliyun.com>/dev/null2>&1'minute=*/5"2、远程的查看定时任务是否添加ansibleyu-mshell-a"crontab-l"3、再添加一个记录,事件是......
  • Ansible自动化运维模块详解
    ansible ad-hoc点对点模块l ping模块主机连通性测试[root@node2~]#ansibleall-mping192.168.200.10|SUCCESS=>{    "ansible_facts":{        "discovered_interpreter_python":"/usr/bin/python"    },    "changed":fals......
  • ansible:playbook详解
    概述playbook是由一个或者多个play组成的列表。主要功能是将预定义的一组主机装扮成事先通过ansible中的task定义好的角色。task实际是调用ansible的一个模块,将多个play组织在一个playbook中,即可以让它们联合起来,将事先编排的机制执行预定义的动作。playbook文件是使用YAML语言......
  • 编译安装ansible
    安装包下载地址:https://releases.ansible.com/ansible/注意:ansible对python版本有要求 1、安装依赖yum-yinstallpython-jinja2PyYAMLpython-paramikopython-babelpython-crypto 2、安装ansibletar-zxvf ansible-2.9.9.tar.gzcd ansible-2.9.9.tar#构建注意py......
  • Python读取Ansible playbooks返回信息
    一.背景及概要设计当公司管理维护的服务器到达一定规模后,就必然借助远程自动化运维工具,而ansible是其中备选之一。Ansible基于Python开发,集合了众多运维工具(puppet、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。Ansible是借助ssh来和远程主机......
  • 初步利用Ansible实现批量服务器自动化管理
    1.Ansible介绍Ansible是一款开源的自动化运维工具,在2012年由MichaelDeHaan创建,现在由RedHat维护。Ansible是基于Python开发的,采用YAML语言编写自动化脚本playbook,可以在Linux、Unix等系统上运行,通过SSH协议管理节点,无需在被管理节点安装agent。Ansible以其简单、高效......
  • Ansible剧本添加静态路由
    Roles目录结构Vars文件(roles/manage_routes/vars/main.yml)点击查看代码routes:-network:"192.168.1.0"netmask:"255.255.255.0"gateway:"192.168.1.1"-network:"10.0.0.0"netmask:"255.255.0.0"......
  • ansible性能巡检+定时任务执行shell脚本
    一、ansible_使用ansible+shell脚本进行环境巡检1.编写脚本#用户目录下执行cd~#编辑vicheck.sh实现效果:脚本内容:巡检指标1:cpu使用率大于70,输出unhealth巡检指标2:内存使用率大于70,输出unhealth巡检指标3:/picclife磁盘使用率大于70,输出unhealth#!/bin/bash#cpu巡检sar......
  • ansible的配置文件的解析
    一:/etc/ansible/ansible.cfg这个文件默认被分为8段[defaults]:通用配置项[inventory]:与主机清单相关的配置项[privilege_escalation]:特权升级相关的配置项[ssh_connection]:使用openssh连接相关的配置项[persistent_connection]:持久连接的配置项[acclelrate]:加速模式配置项[......
  • ansible的常用的模块
    ansible查看模块的帮助的命令ansible-doc模块的名字一:file模块  二:user模块  三:shell模块 四:yum_repository模块 五:yum模块 ......