- 1. ansible模块使用说明
- cat /server/scripts/test.sh
- cat /server/scripts/test.sh
- command: /bin/bash /server/scripts/test_read.sh
- ansible backup -m user -a ‘name=heq uid=777 password=”$6$oldboy123$W3jkmkkVTr.9UStm4S50RT2uIEjB/4GEtaAeVCSZ..uWVN1YGxHvluss9JVfAPV0gSJoGn1qAfxGyttIsTjcz0”‘
- ansible all -i localhost, -m debug -a “msg={{ ‘123456’ | password_hash(‘sha512’, ‘oldboy123’) }}”
- 2. Ansible扩展模块
1. ansible模块使用说明
模块学习使用方法:授之以渔
- 学会看懂官方手册
- 学会在终端使用:
ansible-doc modules
模块一:command
概念介绍:属于默认模块,可以执行命令远程管理主机,简单操作不支持 <> | 等
参数应用: chdir —-在执行命令之前进行目录切换 cmd —-指定需要执行命令信息 只能在剧本中加载模块使用 creates —- 判断一个文件是否存在 如果存在操作将不会执行 removes —- 判断一个文件是否存在 如果存在操作将会执行
模块二:shell
概念介绍:属于万能模块,可以执行命令远程管理主机, 可以识别加载特殊变量或符号信息 参数应用: chdir —-在执行命令之前进行目录切换 cmd —-指定需要执行命令信息 #只能在剧本中加载模块使用 creates —- 判断一个文件是否存在 如果存在操作将不会执行 removes —- 判断一个文件是否存在 如果存在操作将会执行 executable —- 指定执行命令方式 默认/bin/bash执行
eg: 利用shell模块执行脚本
模块三:script
概念介绍: 专门用于执行脚本模块 参数应用: chdir —-在执行命令之前进行目录切换 cmd —-指定需要执行命令信息 只能在剧本中加载模块使用 creates —- 判断一个文件是否存在 如果存在操作将不会执行 removes —- 判断一个文件是否存在 如果存在操作将会执行 executable —- 指定执行命令方式 默认/bin/bash执行
eg: 利用script模块执行脚本
expect:模块示例
某版本jumpserver 交互过程
- hosts: lb01 tasks:
模块四:copy
概念介绍:可以将数据信息传输到远程节点 / 将远程主机数据进行备份
参数应用: src —-指定要进行分发推送源文件 dest —-指定推送远程主机目标路径信息 owner —-推送数据时,对数据进行属主信息调整 group —- 推送数据时,对数据进行属主信息调整 mode —-推送数据时,指定数据权限信息 backup —- 推送数据前,将源有数据进行备份 validate —- 验证传输的文件合法性 content —- 直接在远程主机上生成一个文件,并且指定文件中信息 follow —- ??? remote_src —- 指定复制数据是在管理端还是在远程主机上 no 数据从管理复制 yes 从远程主机进行复制
eg: 01:批量分发传输数据 ansible backup -m copy -a “src=/server/scripts/test.sh dest=/server/scripts/ owner=oldboy group=oldboy mode=0755” backup | CHANGED => { “ansible_facts”: { “discovered_interpreter_python”: “/usr/bin/python” }, “changed”: true, “checksum”: “ee1dc5089146af086a29ec6b95a2042883f8ee5d”, “dest”: “/server/scripts/test.sh”, “gid”: 1000, “group”: “oldboy”, “md5sum”: “b91fcd7982015eebcf72569a059359c1”, “mode”: “0755”, “owner”: “oldboy”, “size”: 28, “src”: “/root/.ansible/tmp/ansible-tmp-1595301732.55-6326-102835621139181/source”, “state”: “file”, “uid”: 1000 }
- 传输数据时对数据进行备份 ```bash 方法一: 利用默认backup指令实现备份数据 ansible backup -m copy -a “src=/server/scripts/test.sh dest=/server/scripts/ owner=oldboy group=oldboy mode=0755 backup=yes” PS: 不方便做批量还原
方法二: 利用remote_src指令实现备份数据 ——推荐 进行批量数据备份 ansible backup,websum -m copy -a “src=/server/scripts/test.sh dest=/server/scripts/test.sh_backup remote_src=yes” 进行批量数据还原 ansible backup,websum -m copy -a “src=/server/scripts/test.sh_backu dest=/server/scripts/test.sh remote_src=yes”
复制链接文件信息说明 ansible backup,websum -m copy -a “src=/server/scripts/test_link.sh dest=/server/scripts/“
直接在文件中添加内容 ansible backup -m copy -a “content=’oldboy71 linux edu\n’ dest=/server/scripts/oldboy.txt” ```
模块五:fetch 了解
概念介绍:可以将数据信息拉取到管理节点 参数应用: src: 指定远程主机需要拉取数据信息 dest: 将主机拉取本地目录路径信息
eg: 01:拉取管理主机数据信息 ansible backup,web01 -m fetch -a ‘src=/backup/oldboy71.txt dest=/tmp/‘
模块六:file
概念介绍: 用于管理文件属性信息/可以在远程主机创建新的数据 参数应用: src —-在创建链接文件时,指定源文件信息 path: —-指定需要修改属性文件信息,或需要创建文件信息 owner: —- 直接对指定远程主机数据进行属主信息调整 group —- 直接对指定远程主机数据进行属组信息调整 mode: —- 直接对指定远程主机数据进行权限信息调整 state: —- 控制操作数据行为 · directory 用于创建目录信息 · hard 用于创建硬链接文件 · link 用于创建软链接文件 · touch 用于创建文件信息 · absent 将指定数据进行删除 · file 检测主机上指定文件是否存在 recurse: —- 进行递归操作 可以实现对目录与目录中数据进行递归属性修改 modification_time: —- 修改数据时间信息 mtime access_time: —- 修改数据时间信息 atime
eg
- 实现对文件数据属性信息调整 文件属性进行调整 ansible backup -m file -a “path=/backup/oldboy71.txt owner=oldboy group=oldboy mode=666”
目录属性进行调整 ansible backup -m file -a “path=/backup/ owner=oldgirl group=oldgirl mode=1777” ansible backup -m file -a “path=/backup/ owner=oldgirl group=oldgirl mode=1777 recurse=yes”
- 实现数据文件信息创建 ansible backup -m file -a “path=/oldgirl/ state=directory” —-创建目录方式 ansible backup -m file -a “path=/oldgirl/oldboy71.txt state=touch” —- 创建文本文件 ansible backup -m file -a “src=/oldgirl/oldboy71.txt path=/oldgirl/oldboy71_hard_link state=hard” —- 创建硬链接文件 ansible backup -m file -a “src=/oldgirl/oldboy71.txt path=/oldgirl/oldboy71_hard_link state=link” —- 创建软链接文件 ansible backup -m file -a “path=/oldgirl/oldboy71_hard_link state=absent” —- 删除指定数据
模块七:yum
概念介绍: 实现批量安装部署软件程序 参数应用: name —-指定安装软件名称信息 或者 安装软件url地址信息 state —-控制软件管理行为状态 installed 实现软件程序安装部署 removed 实现软件程序卸载过程 enablerepo —- 根据指定yum源文件进行下载程序 disablerepo —- 取消指定yum源文件应用 download_only —- 部署yum本地仓库时 只现在软件程序包 不会安装软件
eg:
- 安装部署软件程序 ansible backup -m yum -a “name=iftop state=installed”
- 卸载部署软件程序 ansible backup -m yum -a “name=iftop state=removed”
模块八:cron
概念介绍: 批量设置定时任务功能 参数应用; name —-对定时任务编写注释说明信息,必要 minute —-分钟信息 hour —- 小时信息 day —- 日期信息 month —- 月份信息 weekday —- 星期信息 job —- 任务信息 state —- 定时任务配置状态设置 absent —- 将定时任务删除 present —- 创建定时任务
补充: 定时任务配置问题: 00: 50 设置定时任务 0 */2 * * * 进行数据备份 / 表示时间每隔多久执行 按照时间整数倍 进行每隔多久执行
eg
正常配置定时任务信息 ansible backup -m cron -a “name=time_syn minute=0 hour=0 job=’/bin/sh /server/scripts/time_syn.sh &>/dev/null’”
定时任务信息删除操作 ansible backup -m cron -a “name=time_syn state=absent”
定时任务注释功能 开启注释功能 ansible backup -m cron -a “name=time_syn02 minute=0 hour=0 job=’/bin/sh /server/scripts/time_syn.sh &>/dev/null’ disabled=yes” 取消注释功能 ansible backup -m cron -a “name=time_syn02 minute=0 hour=0 job=’/bin/sh /server/scripts/time_syn.sh &>/dev/null’ disabled=no”
模块九:user
概念介绍: 批量创建用户模块 参数应用: name: —-指定创建用户名称信息 comment: —-用户身份注释信息 类似useradd -c uid: —-用户uid指定配置 类似useradd -u group: —- 指定用户所属主要组 类似useradd -g groups: —- 指定用户所属附属组 类似useradd -G append: —- yes 表示用户可以附属于多个组 —- no 表示用户只能附属于一个组 shell: —- 指定登录系统方式 类似useradd -s state: —- 用户管理状态行为 present —- 创建指定用户 absent —-删除指定用户 remove: —- 将用户所有数据信息全部移除 类似userdel -r password: —- 创建用户密码信息 create_home —- 控制是否创建加目录
eg 01:创建用户信息 指定uid和密码信息
ansible backup -m user -a ‘name=heq uid=777 password=”$6$oldboy123$W3jkmkkVTr.9UStm4S50RT2uIEjB/4GEtaAeVCSZ..uWVN1YGxHvluss9JVfAPV0gSJoGn1qAfxGyttIsTjcz0”‘
用户密码信息必须是密文的: 方法一: 利用ansible命令生成密文 ansible all -i localhost, -m debug -a “msg={{ ‘明文密码信息’ | password_hash(‘sha512’, ‘oldboy123’) }}”
ansible all -i localhost, -m debug -a “msg={{ ‘123456’ | password_hash(‘sha512’, ‘oldboy123’) }}”
localhost | SUCCESS => { "msg": "$6$oldboy123$W3jkmkkVTr.9UStm4S50RT2uIEjB/4GEtaAeVCSZ..uWVN1YGxHvluss9JVfAPV0gSJoGn1qAfxGyttIsTjcz0" }
方法二: 利用python模块实现生成密文信息 yum install -y python-pip pip install passlib python -c “from passlib.hash import sha512_crypt; import getpass; print(sha512_crypt.using(rounds=5000).hash(getpass.getpass()))” 交互过程: 需要输入明文信息 自动获取密文
02:将用户划分到指定组中 ansible backup -m user -a ‘name=heq group=oldboy’ —-修改主要组信息 ansible backup -m user -a ‘name=heq groups=oldgirl append=yes’ —- 修改附属组信息
创建虚拟用户信息 ansible backup -m user -a ‘name=heqing shell=/sbin/nologin create_home=no’
删除用户信息 ansible backup -m user -a ‘name=heq state=absent —- 只删除用户名称信息 不会删除家目录等数据信息 ansible backup -m user -a ‘name=alex state=absent remove=yes’ —- 彻底删除用户所有信息
模块十:service
概念介绍: 管理系统服务运行状态 (systemctl命令可以管理服务) 参数应用: name: —- 定义需要管理服务名称 state: —- 定义服务运行状态 reloaded restarted started stopped enabled: —- 定义服务开启是否自动启动 yes开机自启 no 不要开机自启
eg:
- 控制服务运行状态 ansible backup -m service -a “name=rsyncd.service state=stopped enabled=yes”
2. Ansible扩展模块
命令类型模块
expect 免交互模块
文件类型模块
unarchive 解压模块
archive 压缩数据模块
lineinfile 替换信息模块
包类型模块
pip
系统类型模块
mount