当前位置: 首页 > news >正文

黄岛网站建设哪家权威做瞹视频网站哪里看

黄岛网站建设哪家权威,做瞹视频网站哪里看,国家工商网查询官网,煤棚网架多少钱一平方提示#xff1a;文章写完后#xff0c;目录可以自动生成#xff0c;如何生成可参考右边的帮助文档 目录 一、概述 1.1 为什么要用自动化运维软件 1.2 自动化运维 1.3 自动化运维要注意的方面 1.4 自动化运维主要关注的方面 1.5 常见的开源自动化运维软件 1.6 自动化运维软件… 提示文章写完后目录可以自动生成如何生成可参考右边的帮助文档 目录 一、概述 1.1 为什么要用自动化运维软件 1.2 自动化运维 1.3 自动化运维要注意的方面 1.4 自动化运维主要关注的方面  1.5 常见的开源自动化运维软件 1.6 自动化运维软件一般安装在哪 二、ansible 2.1 概念 2.2 特点 2.3 环境搭建 2.4 实验过程 服务器分组 三、模块 ansible模块 hostname模块 file模块(重点) stat模块(了解) copy模块(重点) fetch模块 user模块 group模块 cron模块 yum_repository模块 yum模块(重点) service模块(重点) script模块 提示以下是本篇文章正文内容下面案例可供参考 一、概述 1.1 为什么要用自动化运维软件 因为服务器特别多的情况下,我们需要比shell更高效的管理工具 1.2 自动化运维 将日常IT运维中大量的重复性工作小到简单的日常检查、配置变更和软件安装大到整个变更流程的组织调度由过去的手工执行转为自动化操作从而减少乃至消除运维中的延迟实现“零延时”的IT运维。   1.3 自动化运维要注意的方面 1管理机与被管理机之间的连接方式     2服务器分组(主机清单)     3自动化运维的管理分类                          文件目录管理                          用户与组管理                          软件安装与卸载                          服务启停与开机自启动 1.4 自动化运维主要关注的方面  假如管理很多台服务器主要关注以下几个方面: 1. 管理机与被管理机的连接(管理机如何将管理指令发送给被管理机) 2. 服务器信息收集  (如果被管理的服务器有centos7.5外还有其它linux发行版,如suse,ubuntu等。当你要做的事情在不同OS上有所不同,你需要收集信息,并将其分开处理) 3. 服务器分组因为有些时候我要做的事情不是针对所有服务器,可能只针对某一个分组  4. 管理内容的主要分类 文件目录管理(包括文件的创建,删除,修改,查看状态,远程拷贝等)    用户和组管理 cron时间任务管理                     yum源配置与通过yum管理软件包    服务管理    远程执行脚本    远程执行命令 1.5 常见的开源自动化运维软件 puppet         基于ruby开发     saltstack         安装方便,需要维护管理机与被管理机的连接,走的zeromq协议。         优点: 管理机器多,速度快, 效率高         基于python开发     ansible         安装与连接方便,直接走ssh协议。         缺点: 管理机器特别多,效率较低         基于python开发 1.6 自动化运维软件一般安装在哪 一般安装在跳板机(堡垒机)整合使用   ansible主机清单     目的: 对管理的多台服务器进行分组 二、ansible 2.1 概念 ansible是一种由Python开发的自动化运维工具集合了众多运维工具puppet、cfengine、chef、func、fabric的优点实现了批量系统配置、批量程序部署、批量运行命令等功能。 2.2 特点 部署简单 默认使用ssh进行管理基于python里的paramiko模块开发** 管理端和被管理端不需要启动服务 配置简单功能强大扩展性强 能过playbook(剧本)进行多个任务的编排 2.3 环境搭建 实验准备:三台机器一台管理两台被管理 1. 静态ip 管理192.168.156.11  被管理的两台192.168.156.12  192.168.156.13 2. 主机名及主机名互相绑定   所有主机都要配置主机名和 hosts文件 [rootlocalhost]# hostnamectl set-hostname hd1 [rootlocalhost]# bash [roothd1 ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.156.11 hd1 192.168.156.12 hd2 192.168.156.13 hd3 nd1:nd2:nd3: 3. 关闭防火墙, selinux 时间同步 [roothd1 ~]# systemctl restart ntpd [roothd1 ~]# systemctl enable ntpd 4. 确认和配置yum源(需要epel源) yum -y install epel-release  [rootlocalhost ~]# yum install -y epel-release 已加载插件fastestmirror, langpacks Loading mirror speeds from cached hostfile* base: mirrors.aliyun.com* extras: mirrors.bfsu.edu.cn* updates: mirrors.bfsu.edu.cn base | 3.6 kB 00:00:00 extras | 2.9 kB 00:00:00 updates | 2.9 kB 00:00:00 (1/4): extras/7/x86_64/primary_db | 250 kB 00:00:00 (2/4): base/7/x86_64/group_gz | 153 kB 00:00:00 (3/4): base/7/x86_64/primary_db | 6.1 MB 00:00:05 (4/4): updates/7/x86_64/primary_db | 22 MB 00:00:06 正在解决依赖关系 -- 正在检查事务 --- 软件包 epel-release.noarch.0.7-11 将被 安装 -- 解决依赖关系完成依赖关系解决Package 架构 版本 源 大小正在安装:epel-release noarch 7-11 extras 15 k事务概要安装 1 软件包总下载量15 k 安装大小24 k Downloading packages: 警告/var/cache/yum/x86_64/7/extras/packages/epel-release-7-11.noarch.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY epel-release-7-11.noarch.rpm 的公钥尚未安装 epel-release-7-11.noarch.rpm | 15 kB 00:00:00 从 file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 检索密钥 导入 GPG key 0xF4A80EB5:用户ID : CentOS-7 Key (CentOS 7 Official Signing Key) securitycentos.org指纹 : 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5软件包 : centos-release-7-9.2009.0.el7.centos.x86_64 (anaconda)来自 : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 Running transaction check Running transaction test Transaction test succeeded Running transaction正在安装 : epel-release-7-11.noarch 1/1 验证中 : epel-release-7-11.noarch 1/1 已安装:epel-release.noarch 0:7-11 完毕2.4 实验过程 第1步: 管理机上安装ansible被管理节点必须打开ssh服务 [rootlocalhost ~]# yum -y install ansible 已加载插件fastestmirror, langpacks Loading mirror speeds from cached hostfile* base: mirrors.ustc.edu.cn* epel: mirrors.bfsu.edu.cn* extras: mirrors.huaweicloud.com* updates: mirrors.huaweicloud.com 正在解决依赖关系 -- 正在检查事务 --- 软件包 ansible.noarch.0.2.9.27-1.el7 将被 安装 -- 正在处理依赖关系 python-httplib2它被软件包 ansible-2.9.27-1.el7.noarch 需要 -- 正在处理依赖关系 python-jinja2它被软件包 ansible-2.9.27-1.el7.noarch 需要 -- 正在处理依赖关系 python-paramiko它被软件包 ansible-2.9.27-1.el7.noarch 需要 -- 正在处理依赖关系 python2-cryptography它被软件包 ansible-2.9.27-1.el7.noarch 需要 -- 正在处理依赖关系 python2-jmespath它被软件包 ansible-2.9.27-1.el7.noarch 需要 -- 正在处理依赖关系 sshpass它被软件包 ansible-2.9.27-1.el7.noarch 需要 -- 正在检查事务 --- 软件包 python-jinja2.noarch.0.2.7.2-4.el7 将被 安装 -- 正在处理依赖关系 python-babel 0.8它被软件包 python-jinja2-2.7.2-4.el7.noarch 需要 -- 正在处理依赖关系 python-markupsafe它被软件包 python-jinja2-2.7.2-4.el7.noarch 需要 --- 软件包 python-paramiko.noarch.0.2.1.1-9.el7 将被 安装 -- 正在处理依赖关系 python2-pyasn1它被软件包 python-paramiko-2.1.1-9.el7.noarch 需要 --- 软件包 python2-cryptography.x86_64.0.1.7.2-2.el7 将被 安装 -- 正在处理依赖关系 python-idna 2.0它被软件包 python2-cryptography-1.7.2-2.el7.x86_64 需要 -- 正在处理依赖关系 python-cffi 1.4.1它被软件包 python2-cryptography-1.7.2-2.el7.x86_64 需要 -- 正在处理依赖关系 python-enum34它被软件包 python2-cryptography-1.7.2-2.el7.x86_64 需要 --- 软件包 python2-httplib2.noarch.0.0.18.1-3.el7 将被 安装 --- 软件包 python2-jmespath.noarch.0.0.9.4-2.el7 将被 安装 --- 软件包 sshpass.x86_64.0.1.06-2.el7 将被 安装 -- 正在检查事务 --- 软件包 python-babel.noarch.0.0.9.6-8.el7 将被 安装 --- 软件包 python-cffi.x86_64.0.1.6.0-5.el7 将被 安装 -- 正在处理依赖关系 python-pycparser它被软件包 python-cffi-1.6.0-5.el7.x86_64 需要 --- 软件包 python-enum34.noarch.0.1.0.4-1.el7 将被 安装 --- 软件包 python-idna.noarch.0.2.4-1.el7 将被 安装 --- 软件包 python-markupsafe.x86_64.0.0.11-10.el7 将被 安装 --- 软件包 python2-pyasn1.noarch.0.0.1.9-7.el7 将被 安装 -- 正在检查事务 --- 软件包 python-pycparser.noarch.0.2.14-1.el7 将被 安装 -- 正在处理依赖关系 python-ply它被软件包 python-pycparser-2.14-1.el7.noarch 需要 -- 正在检查事务 --- 软件包 python-ply.noarch.0.3.4-11.el7 将被 安装 -- 解决依赖关系完成依赖关系解决Package 架构 版本 源 大小正在安装:ansible noarch 2.9.27-1.el7 epel 17 M 为依赖而安装:python-babel noarch 0.9.6-8.el7 base 1.4 Mpython-cffi x86_64 1.6.0-5.el7 base 218 kpython-enum34 noarch 1.0.4-1.el7 base 52 kpython-idna noarch 2.4-1.el7 base 94 kpython-jinja2 noarch 2.7.2-4.el7 base 519 kpython-markupsafe x86_64 0.11-10.el7 base 25 kpython-paramiko noarch 2.1.1-9.el7 base 269 kpython-ply noarch 3.4-11.el7 base 123 kpython-pycparser noarch 2.14-1.el7 base 104 kpython2-cryptography x86_64 1.7.2-2.el7 base 502 kpython2-httplib2 noarch 0.18.1-3.el7 epel 125 kpython2-jmespath noarch 0.9.4-2.el7 epel 41 kpython2-pyasn1 noarch 0.1.9-7.el7 base 100 ksshpass x86_64 1.06-2.el7 extras 21 k事务概要安装 1 软件包 (14 依赖软件包)总下载量21 M 安装大小119 M Downloading packages: (1/15): python-enum34-1.0.4-1.el7.noarch.rpm | 52 kB 00:00:00 (2/15): python-cffi-1.6.0-5.el7.x86_64.rpm | 218 kB 00:00:01 (3/15): python-markupsafe-0.11-10.el7.x86_64.rpm | 25 kB 00:00:00 (4/15): python-babel-0.9.6-8.el7.noarch.rpm | 1.4 MB 00:00:02 (5/15): python-ply-3.4-11.el7.noarch.rpm | 123 kB 00:00:00 (6/15): python-pycparser-2.14-1.el7.noarch.rpm | 104 kB 00:00:00 (7/15): python-jinja2-2.7.2-4.el7.noarch.rpm | 519 kB 00:00:01 (8/15): python-paramiko-2.1.1-9.el7.noarch.rpm | 269 kB 00:00:00 (9/15): python2-cryptography-1.7.2-2.el7.x86_64.rpm | 502 kB 00:00:00 (10/15): ansible-2.9.27-1.el7.noarch.rpm | 17 MB 00:00:05 (11/15): python2-httplib2-0.18.1-3.el7.noarch.rpm | 125 kB 00:00:00 (12/15): python2-jmespath-0.9.4-2.el7.noarch.rpm | 41 kB 00:00:00 (13/15): python2-pyasn1-0.1.9-7.el7.noarch.rpm | 100 kB 00:00:00 (14/15): sshpass-1.06-2.el7.x86_64.rpm | 21 kB 00:00:00 (15/15): python-idna-2.4-1.el7.noarch.rpm | 94 kB 00:00:08 ------------------------------------------------------------------------------------------------------------------------- 总计 2.4 MB/s | 21 MB 00:00:08 Running transaction check Running transaction test Transaction test succeeded Running transaction正在安装 : python2-pyasn1-0.1.9-7.el7.noarch 1/15 正在安装 : python-enum34-1.0.4-1.el7.noarch 2/15 正在安装 : sshpass-1.06-2.el7.x86_64 3/15 正在安装 : python2-httplib2-0.18.1-3.el7.noarch 4/15 正在安装 : python-babel-0.9.6-8.el7.noarch 5/15 正在安装 : python2-jmespath-0.9.4-2.el7.noarch 6/15 正在安装 : python-ply-3.4-11.el7.noarch 7/15 正在安装 : python-pycparser-2.14-1.el7.noarch 8/15 正在安装 : python-cffi-1.6.0-5.el7.x86_64 9/15 正在安装 : python-markupsafe-0.11-10.el7.x86_64 10/15 正在安装 : python-jinja2-2.7.2-4.el7.noarch 11/15 正在安装 : python-idna-2.4-1.el7.noarch 12/15 正在安装 : python2-cryptography-1.7.2-2.el7.x86_64 13/15 正在安装 : python-paramiko-2.1.1-9.el7.noarch 14/15 正在安装 : ansible-2.9.27-1.el7.noarch 15/15 验证中 : python-idna-2.4-1.el7.noarch 1/15 验证中 : python-markupsafe-0.11-10.el7.x86_64 2/15 验证中 : python-ply-3.4-11.el7.noarch 3/15 验证中 : ansible-2.9.27-1.el7.noarch 4/15 验证中 : python-paramiko-2.1.1-9.el7.noarch 5/15 验证中 : python2-jmespath-0.9.4-2.el7.noarch 6/15 验证中 : python-babel-0.9.6-8.el7.noarch 7/15 验证中 : python2-httplib2-0.18.1-3.el7.noarch 8/15 验证中 : python-cffi-1.6.0-5.el7.x86_64 9/15 验证中 : sshpass-1.06-2.el7.x86_64 10/15 验证中 : python-jinja2-2.7.2-4.el7.noarch 11/15 验证中 : python2-pyasn1-0.1.9-7.el7.noarch 12/15 验证中 : python-enum34-1.0.4-1.el7.noarch 13/15 验证中 : python-pycparser-2.14-1.el7.noarch 14/15 验证中 : python2-cryptography-1.7.2-2.el7.x86_64 15/15 已安装:ansible.noarch 0:2.9.27-1.el7 作为依赖被安装:python-babel.noarch 0:0.9.6-8.el7 python-cffi.x86_64 0:1.6.0-5.el7 python-enum34.noarch 0:1.0.4-1.el7 python-idna.noarch 0:2.4-1.el7 python-jinja2.noarch 0:2.7.2-4.el7 python-markupsafe.x86_64 0:0.11-10.el7 python-paramiko.noarch 0:2.1.1-9.el7 python-ply.noarch 0:3.4-11.el7 python-pycparser.noarch 0:2.14-1.el7 python2-cryptography.x86_64 0:1.7.2-2.el7 python2-httplib2.noarch 0:0.18.1-3.el7 python2-jmespath.noarch 0:0.9.4-2.el7 python2-pyasn1.noarch 0:0.1.9-7.el7 sshpass.x86_64 0:1.06-2.el7 完毕ansible模块 [roothd1 ~]# ansible --version ansible 2.9.27config file /etc/ansible/ansible.cfgconfigured module search path [u/root/.ansible/plugins/modules, u/usr/share/ansible/plugins/modules]ansible python module location /usr/lib/python2.7/site-packages/ansibleexecutable location /usr/bin/ansiblepython version 2.7.5 (default, Oct 14 2020, 14:45:30) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)]第2步: 实现master对agent的免密登录只在master上做。(如果这一步不做则在后面操作agent时都要加-k参数传密码;或者在主机清单里传密码) [roothd1 ~]# ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Created directory /root/.ssh. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: SHA256:IGqDvSfCcyMWgl76x8/bNZP1CuzUMQm6bVpdxSfqE2Y roothd1 The keys randomart image is: ---[RSA 2048]---- | | | . | | . . . . | |.o . . . . ....o| |.. S. E . | |.o . | |.Booo . %oo . | |..o.o. . B .. | | .. ..o . . | ----[SHA256]-----[roothd1 ~]# ssh-copy-id -i 192.168.156.12 /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: /root/.ssh/id_rsa.pub The authenticity of host 192.168.156.12 (192.168.156.12) cant be established. ECDSA key fingerprint is SHA256:UYOTDfnPCXDYRisvqKkyxQEEiuZnt6vtyjxyIwTT10M. ECDSA key fingerprint is MD5:43:59:03:5c:67:80:66:f1:84:6e:ab:9d:d9:1a:b4:90. Are you sure you want to continue connecting (yes/no)? yes /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys root192.168.156.12s password: Number of key(s) added: 1Now try logging into the machine, with: ssh 192.168.156.12 and check to make sure that only the key(s) you wanted were added.[roothd1 ~]# ssh-copy-id -i 192.168.156.13 /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: /root/.ssh/id_rsa.pub The authenticity of host 192.168.156.13 (192.168.156.13) cant be established. ECDSA key fingerprint is SHA256:UYOTDfnPCXDYRisvqKkyxQEEiuZnt6vtyjxyIwTT10M. ECDSA key fingerprint is MD5:43:59:03:5c:67:80:66:f1:84:6e:ab:9d:d9:1a:b4:90. Are you sure you want to continue connecting (yes/no)? yes/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys root192.168.156.13s password: Number of key(s) added: 1Now try logging into the machine, with: ssh 192.168.156.13 and check to make sure that only the key(s) you wanted were added.第3步: 在master上定义主机组,并测试连接性 [roothd1 ~]# ansible -m ping group1 192.168.156.12 | SUCCESS {ansible_facts: {discovered_interpreter_python: /usr/bin/python}, changed: false, ping: pong } 192.168.156.13 | SUCCESS {ansible_facts: {discovered_interpreter_python: /usr/bin/python}, changed: false, ping: pong } [roothd1 ~]# ansible -m ping all 192.168.156.13 | SUCCESS {ansible_facts: {discovered_interpreter_python: /usr/bin/python}, changed: false, ping: pong } 192.168.156.12 | SUCCESS {ansible_facts: {discovered_interpreter_python: /usr/bin/python}, changed: false, ping: pong }服务器分组 ansible通过一个主机清单功能来实现服务器分组。 Ansible的默认主机清单配置文件为/etc/ansible/hosts. 示例: [nginx] 组名 apache[1:10].aaa.com 表示apache1.aaa.com到apache10.aaa.com这10台机器 nginx[a:z].aaa.com 表示nginxa.aaa.com到nginxz.aaa.com共26台机器 10.1.1.[11:15] 表示10.1.1.11到10.1.1.15这5台机器 示例: [nginx] 10.1.1.13:2222 表示10.1.1.13这台但ssh端口为2222 示例: 定义10.1.1.12:2222这台服务器的别名为nginx1 nginx1 ansible_ssh_host10.1.1.13 ansible_ssh_port2222 示例: 没有做免密登录的服务器可以指定用户名与密码 nginx1  ansible_ssh_host10.1.1.13 ansible_ssh_port2222 ansible_ssh_userroot ansible_ssh_pass123456 示例: 利用别名来分组 nginx1  ansible_ssh_host10.1.1.13 ansible_ssh_port2222 ansible_ssh_userroot ansible_ssh_pass123456 nginx2  ansible_ssh_host10.1.1.12 ​ [nginx] nginx1 nginx2三、模块 ansible模块 ansible是基于模块工作的本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块ansible只是提供一种框架。 ansible支持的模块非常的多我们并不需要把每个模块都记住而只需要熟悉一些常见的模块其它的模块在需要用到时再查询即可。 查看所有支持的模块 [roothd1~]# ansible-doc -l a10_server Manage A10 Networks AX/SoftAX... a10_server_axapi3 Manage A10 Networks AX/SoftAX... a10_service_group Manage A10 Networks AX/SoftAX... a10_virtual_server Manage A10 Networks AX/SoftAX... aci_aaa_user Manage AAA users (aaa:User) ....... 如果要查看ping模块的用法使用下面命令其它模块以此类推) # ansible-doc ping hostname模块 hostname模块用于修改主机名注意: 它不能修改/etc/hosts文件) 将其中一远程机器主机名修改为agent1.com ansible 10.1.1.12  -m hostname -a nameagent.com file模块(重点) file模块用于对文件相关的操作(创建, 删除, 软硬链接等) 创建一个目录 :  ansible group1 -m file -a path/test statedirectory [roothd1 ~]# ansible group1 -m file -a path/test statedirectory 192.168.156.12 | CHANGED {ansible_facts: {discovered_interpreter_python: /usr/bin/python}, changed: true, gid: 0, group: root, mode: 0755, owner: root, path: /test, secontext: unconfined_u:object_r:default_t:s0, size: 6, state: directory, uid: 0 } 192.168.156.13 | CHANGED {ansible_facts: {discovered_interpreter_python: /usr/bin/python}, changed: true, gid: 0, group: root, mode: 0755, owner: root, path: /test, secontext: unconfined_u:object_r:default_t:s0, size: 6, state: directory, uid: 0 }验证 创建一个文件 :  ansible group1 -m file -a path/test/111 statetouch roothd1 ~]# ansible group1 -m file -a path/test/111 statetouch 192.168.156.13 | CHANGED {ansible_facts: {discovered_interpreter_python: /usr/bin/python}, changed: true, dest: /test/111, gid: 0, group: root, mode: 0644, owner: root, secontext: unconfined_u:object_r:default_t:s0, size: 0, state: file, uid: 0 } 192.168.156.12 | CHANGED {ansible_facts: {discovered_interpreter_python: /usr/bin/python}, changed: true, dest: /test/111, gid: 0, group: root, mode: 0644, owner: root, secontext: unconfined_u:object_r:default_t:s0, size: 0, state: file, uid: 0 }验证 递归修改owner,group,mode ansible group1 -m file -a path/test recurseyes ownerbin groupdaemon mode1777 [roothd1 ~]# ansible group1 -m file -a path/test recurseyes ownerbin groupdaemon mode1777 192.168.156.12 | CHANGED {ansible_facts: {discovered_interpreter_python: /usr/bin/python}, changed: true, gid: 2, group: daemon, mode: 01777, owner: bin, path: /test, secontext: unconfined_u:object_r:default_t:s0, size: 17, state: directory, uid: 1 } 192.168.156.13 | CHANGED {ansible_facts: {discovered_interpreter_python: /usr/bin/python}, changed: true, gid: 2, group: daemon, mode: 01777, owner: bin, path: /test, secontext: unconfined_u:object_r:default_t:s0, size: 17, state: directory, uid: 1 }验证 删除目录 absent 缺席的连同目录里的所有文件) ansible group1 -m file -a path/test stateabsent [roothd1 ~]# ansible group1 -m file -a path/test stateabsent 192.168.156.13 | CHANGED {ansible_facts: {discovered_interpreter_python: /usr/bin/python}, changed: true, path: /test, state: absent } 192.168.156.12 | CHANGED {ansible_facts: {discovered_interpreter_python: /usr/bin/python}, changed: true, path: /test, state: absent }创建文件并指定owner,group,mode等 ansible group1 -m file -a path/tmp/111 statetouch ownerbin groupdaemon mode1777 [roothd1 ~]# ansible group1 -m file -a path/tmp/111 statetouch ownerbin groupdaemon mode1777 192.168.156.12 | CHANGED {ansible_facts: {discovered_interpreter_python: /usr/bin/python}, changed: true, dest: /tmp/111, gid: 2, group: daemon, mode: 01777, owner: bin, secontext: unconfined_u:object_r:user_tmp_t:s0, size: 0, state: file, uid: 1 } 192.168.156.13 | CHANGED {ansible_facts: {discovered_interpreter_python: /usr/bin/python}, changed: true, dest: /tmp/111, gid: 2, group: daemon, mode: 01777, owner: bin, secontext: unconfined_u:object_r:user_tmp_t:s0, size: 0, state: file, uid: 1 }删除文件 master# ansible group1 -m file -a path/tmp/111 stateabsent [roothd1 ~]# ansible group1 -m file -a path/tmp/111 stateabsent 192.168.156.12 | CHANGED {ansible_facts: {discovered_interpreter_python: /usr/bin/python}, changed: true, path: /tmp/111, state: absent } 192.168.156.13 | CHANGED {ansible_facts: {discovered_interpreter_python: /usr/bin/python}, changed: true, path: /tmp/111, state: absent }创建软链接文件 ansible group1 -m file -a src/etc/fstab path/tmp/fstab statelink [roothd1 ~]# ansible group1 -m file -a src/etc/fstab path/tmp/fstab statelink 192.168.156.12 | CHANGED {ansible_facts: {discovered_interpreter_python: /usr/bin/python}, changed: true, dest: /tmp/fstab, gid: 0, group: root, mode: 0777, owner: root, secontext: unconfined_u:object_r:user_tmp_t:s0, size: 10, src: /etc/fstab, state: link, uid: 0 } 192.168.156.13 | CHANGED {ansible_facts: {discovered_interpreter_python: /usr/bin/python}, changed: true, dest: /tmp/fstab, gid: 0, group: root, mode: 0777, owner: root, secontext: unconfined_u:object_r:user_tmp_t:s0, size: 10, src: /etc/fstab, state: link, uid: 0 }创建硬链接文件 ansible group1 -m file -a src/etc/fstab path/tmp/fstab2 statehard [roothd1 ~]# ansible group1 -m file -a src/etc/fstab path/tmp/fstab2 statehard 192.168.156.12 | CHANGED {ansible_facts: {discovered_interpreter_python: /usr/bin/python}, changed: true, dest: /tmp/fstab2, gid: 0, group: root, mode: 0644, owner: root, secontext: system_u:object_r:etc_t:s0, size: 465, src: /etc/fstab, state: hard, uid: 0 } 192.168.156.13 | CHANGED {ansible_facts: {discovered_interpreter_python: /usr/bin/python}, changed: true, dest: /tmp/fstab2, gid: 0, group: root, mode: 0644, owner: root, secontext: system_u:object_r:etc_t:s0, size: 465, src: /etc/fstab, state: hard, uid: 0 }stat模块(了解) stat模块类似linux的stat命令用于获取文件的状态信息。 获取/etc/fstab文件的状态信息 ansible group1 -m stat -a path/etc/fstab [roothd1 ~]# ansible group1 -m stat -a path/etc/fstab 192.168.156.12 | SUCCESS {ansible_facts: {discovered_interpreter_python: /usr/bin/python}, changed: false, stat: {atime: 1694016149.685236, attr_flags: , attributes: [], block_size: 4096, blocks: 8, charset: us-ascii, checksum: 3a63ec3ba12baa96fe6719bc31b22731fbc2d13f, ctime: 1694003717.553521, dev: 64768, device_type: 0, executable: false, exists: true, gid: 0, gr_name: root, inode: 16777282, isblk: false, ischr: false, isdir: false, isfifo: false, isgid: false, islnk: false, isreg: true, issock: false, isuid: false, mimetype: text/plain, mode: 0644, mtime: 1688831255.966, nlink: 2, path: /etc/fstab, pw_name: root, readable: true, rgrp: true, roth: true, rusr: true, size: 465, uid: 0, version: 955456813, wgrp: false, woth: false, writeable: true, wusr: true, xgrp: false, xoth: false, xusr: false} } 192.168.156.13 | SUCCESS {ansible_facts: {discovered_interpreter_python: /usr/bin/python}, changed: false, stat: {atime: 1694016150.7691061, attr_flags: , attributes: [], block_size: 4096, blocks: 8, charset: us-ascii, checksum: 3a63ec3ba12baa96fe6719bc31b22731fbc2d13f, ctime: 1694003717.660331, dev: 64768, device_type: 0, executable: false, exists: true, gid: 0, gr_name: root, inode: 16777282, isblk: false, ischr: false, isdir: false, isfifo: false, isgid: false, islnk: false, isreg: true, issock: false, isuid: false, mimetype: text/plain, mode: 0644, mtime: 1688831255.966, nlink: 2, path: /etc/fstab, pw_name: root, readable: true, rgrp: true, roth: true, rusr: true, size: 465, uid: 0, version: 955456813, wgrp: false, woth: false, writeable: true, wusr: true, xgrp: false, xoth: false, xusr: false} }copy模块(重点) copy模块用于对文件的远程拷贝操作如把本地的文件拷贝到远程的机器上) 在master上准备一个文件拷贝此文件到group1的所有机器上 [roothd1 ~]# echo master /tmp/222 [roothd1 ~]# ansible group1 -m copy -a src/tmp/222 dest/tmp/333 192.168.156.13 | CHANGED {ansible_facts: {discovered_interpreter_python: /usr/bin/python}, changed: true, checksum: 30f79bec32243c31dd91a05c0ad7b80f1e301aea, dest: /tmp/333, gid: 0, group: root, md5sum: c963080767f45828c31f83ca5cd25d36, mode: 0644, owner: root, secontext: unconfined_u:object_r:admin_home_t:s0, size: 7, src: /root/.ansible/tmp/ansible-tmp-1694082238.6-32333-216155124507669/source, state: file, uid: 0 } 192.168.156.12 | CHANGED {ansible_facts: {discovered_interpreter_python: /usr/bin/python}, changed: true, checksum: 30f79bec32243c31dd91a05c0ad7b80f1e301aea, dest: /tmp/333, gid: 0, group: root, md5sum: c963080767f45828c31f83ca5cd25d36, mode: 0644, owner: root, secontext: unconfined_u:object_r:admin_home_t:s0, size: 7, src: /root/.ansible/tmp/ansible-tmp-1694082238.71-32331-202097380347300/source, state: file, uid: 0 }使用content参数直接往远程文件里写内容会覆盖原内容 [roothd1 ~]# ansible group1 -m copy -a contentha ha\n dest/tmp/333192.168.156.12 | CHANGED {ansible_facts: {discovered_interpreter_python: /usr/bin/python}, changed: true, checksum: 92b543983c8ed2cb1ddccb1ea014a2b1d78eb38d, dest: /tmp/333, gid: 0, group: root, md5sum: a2c8d6b872054293afd41061e93bc289, mode: 0644, owner: root, secontext: unconfined_u:object_r:admin_home_t:s0, size: 6, src: /root/.ansible/tmp/ansible-tmp-1694082329.66-34241-16644602234490/source, state: file, uid: 0 } 192.168.156.13 | CHANGED {ansible_facts: {discovered_interpreter_python: /usr/bin/python}, changed: true, checksum: 92b543983c8ed2cb1ddccb1ea014a2b1d78eb38d, dest: /tmp/333, gid: 0, group: root, md5sum: a2c8d6b872054293afd41061e93bc289, mode: 0644, owner: root, secontext: unconfined_u:object_r:admin_home_t:s0, size: 6, src: /root/.ansible/tmp/ansible-tmp-1694082329.25-34243-274972285491964/source, state: file, uid: 0 }注意:ansible中-a后面的参数里也有引号时记得要单引双引交叉使用如果都为双引会出现问题 使用force参数控制是否强制覆盖 如果目标文件已经存在则不覆盖 [roothd1 ~]# ansible group1 -m copy -a src/tmp/222 dest/tmp/333 forceno 192.168.156.12 | SUCCESS {changed: false, dest: /tmp/333, src: /tmp/222 } 192.168.156.13 | SUCCESS {changed: false, dest: /tmp/333, src: /tmp/222 }如果目标文件已经存在则会强制覆盖 [roothd1 ~]# ansible group1 -m copy -a src/tmp/222 dest/tmp/333 forceyes 192.168.156.13 | CHANGED {ansible_facts: {discovered_interpreter_python: /usr/bin/python}, changed: true, checksum: 30f79bec32243c31dd91a05c0ad7b80f1e301aea, dest: /tmp/333, gid: 0, group: root, md5sum: c963080767f45828c31f83ca5cd25d36, mode: 0644, owner: root, secontext: unconfined_u:object_r:admin_home_t:s0, size: 7, src: /root/.ansible/tmp/ansible-tmp-1694082949.04-47354-114876946059338/source, state: file, uid: 0 } 192.168.156.12 | CHANGED {ansible_facts: {discovered_interpreter_python: /usr/bin/python}, changed: true, checksum: 30f79bec32243c31dd91a05c0ad7b80f1e301aea, dest: /tmp/333, gid: 0, group: root, md5sum: c963080767f45828c31f83ca5cd25d36, mode: 0644, owner: root, secontext: unconfined_u:object_r:admin_home_t:s0, size: 7, src: /root/.ansible/tmp/ansible-tmp-1694082949.02-47353-180469275670345/source, state: file, uid: 0 }使用backup参数控制是否备份文件 backupyes表示如果拷贝的文件内容与原内容不一样则会备份一份 group1的机器上会将/tmp/333备份一份备份文件命名加上时间再远程拷贝新的文件为/tmp/333 [roothd1 ~]# ansible group1 -m copy -a src/etc/fstab dest/tmp/333 backupyes ownerdaemon groupdaemon mode1777 192.168.156.12 | CHANGED {ansible_facts: {discovered_interpreter_python: /usr/bin/python}, backup_file: /tmp/333.47177.2023-09-0718:37:16~, changed: true, checksum: 3a63ec3ba12baa96fe6719bc31b22731fbc2d13f, dest: /tmp/333, gid: 2, group: daemon, md5sum: d3fc2b88bf5e90530ca5793a59ca2f59, mode: 01777, owner: daemon, secontext: unconfined_u:object_r:admin_home_t:s0, size: 465, src: /root/.ansible/tmp/ansible-tmp-1694083033.2-49357-246671726366385/source, state: file, uid: 2 } 192.168.156.13 | CHANGED {ansible_facts: {discovered_interpreter_python: /usr/bin/python}, backup_file: /tmp/333.46985.2023-09-0718:37:16~, changed: true, checksum: 3a63ec3ba12baa96fe6719bc31b22731fbc2d13f, dest: /tmp/333, gid: 2, group: daemon, md5sum: d3fc2b88bf5e90530ca5793a59ca2f59, mode: 01777, owner: daemon, secontext: unconfined_u:object_r:admin_home_t:s0, size: 465, src: /root/.ansible/tmp/ansible-tmp-1694083033.27-49358-35198328455539/source, state: file, uid: 2 }copy模块拷贝时要注意拷贝目录后面是否带/符号 /etc/yum.repos.d后面不带/符号则表示把/etc/yum.repos.d整个目录拷贝到/tmp/目录下 ansible group1 -m copy -a src/etc/yum.repos.d dest/tmp/ [roothd1 ~]# ansible group1 -m copy -a src/etc/yum.repos.d dest/tmp/ 192.168.156.13 | CHANGED {changed: true, dest: /tmp/, src: /etc/yum.repos.d } 192.168.156.12 | CHANGED {changed: true, dest: /tmp/, src: /etc/yum.repos.d }/etc/yum.repos.d/后面带/符号则表示把/etc/yum.repos.d/目录里的所有文件拷贝到/tmp/目录下 ansible group1 -m copy -a src/etc/yum.repos.d/ dest/tmp/ [roothd1 ~]# ansible group1 -m copy -a src/etc/yum.repos.d/ dest/tmp/ 192.168.156.12 | CHANGED {changed: true, dest: /tmp/, src: /etc/yum.repos.d/ } 192.168.156.13 | CHANGED {changed: true, dest: /tmp/, src: /etc/yum.repos.d/ }fetch模块 fetch模块与copy模块类似但作用相反。用于把远程机器的文件拷贝到本地。 第1步: 在两台被管理机上分别创建一个同名文件但内容不同) agent1# echo agent1 /tmp/1.txt agent2# echo agent2 /tmp/1.txt 第2步: 从master上fecth文件(因为group1里有2台机器,为了避免同名文件文件冲突它使用了不同的目录) master# ansible group1 -m fetch -a src/tmp/1.txt dest/tmp/ 192.168.156.12 | CHANGED {changed: true, checksum: d2911a028d3fcdf775a4e26c0b9c9d981551ae41, dest: /tmp/192.156.156.12/tmp/1.txt, 192.156.156.12的在这里md5sum: 0d59da0b2723eb03ecfbb0d779e6eca5, remote_checksum: d2911a028d3fcdf775a4e26c0b9c9d981551ae41, remote_md5sum: null } 192.168.156.13 | CHANGED {changed: true, checksum: b27fb3c4285612643593d53045035bd8d972c995, dest: /tmp/192.168.156.13/tmp/1.txt, 192.168.156.13的在这里md5sum: cd0bd22f33d6324908dbadf6bc128f52, remote_checksum: b27fb3c4285612643593d53045035bd8d972c995, remote_md5sum: null } ​ 第3步: 先删除上面fetch过来的, 然后尝试只fetch其中一台机器的也会使用名称来做子目录区分 master# rm /tmp/192.168.156.* -rf ​ ​ master# ansible 192.168.156.12 -m fetch -a src/tmp/1.txt dest/tmp/ 192.168.156.12 | CHANGED {changed: true, checksum: d2911a028d3fcdf775a4e26c0b9c9d981551ae41, dest: /tmp/192.168.156.12/tmp/1.txt, 只fetch一个也会这样命名md5sum: 0d59da0b2723eb03ecfbb0d779e6eca5, remote_checksum: d2911a028d3fcdf775a4e26c0b9c9d981551ae41, remote_md5sum: null } 注意: fetch模块不能从远程拷贝目录到本地 user模块 user模块用于管理用户账号和用户属性。 创建aaa用户,默认为普通用户,创建家目录 master# ansible group1 -m user -a ‘nameaaa statepresent’ 创建bbb系统用户,并且登录shell环境为/sbin/nologin master# ansible group1 -m user -a ‘namebbb statepresent systemyes shell/sbin/nologin’ 创建ccc用户, 使用uid参数指定uid, 使用password参数传密码 master# echo 123456 | openssl passwd -1 -stdin $1$DpcyhW2G$Kb/y1f.lyLI4MpRlHU9oq0 ​ 下一句命令注意一下格式密码要用双引号引起来单引号的话验证时会密码不正确 master# ansible group1 -m user -a nameccc uid2000 statepresent password$1$DpcyhW2G$Kb/y1f.lyLI4MpRlHU9oq0 创建一个普通用户叫hadoop,并产生空密码 密钥对 master# ansible group1 -m user -a namehadoop generate_ssh_keyyes 删除aaa用户,但家目录默认没有删除 master# ansible group1 -m user -a nameaaa stateabsent 删除bbb用户,使用removeyes参数让其删除用户的同时也删除家目录 master# ansible group1 -m user -a namebbb stateabsent removeyes group模块 group模块用于管理用户组和用户组属性。 创建组 master# ansible group1 -m group -a namegroupa gid3000 statepresent 删除组如果有用户的gid为此组则删除不了) master# ansible group1 -m group -a namegroupa stateabsent cron模块 cron模块用于管理周期性时间任务 创建一个cron任务,不指定user的话,默认就是root因为我这里是用root操作的)。 如果minute,hour,day,month,week不指定的话默认都为* master# ansible group1 -m cron -a nametest cron1 userroot jobtouch /tmp/111 minute*/2 删除cron任务 master# ansible group1 -m cron -a nametest cron1 stateabsent yum_repository模块 yum_repository模块用于配置yum仓库。 增加一个/etc/yum.repos.d/local.repo配置文件 master# ansible group1 -m yum_repository -a namelocal descriptionlocalyum baseurlfile:///mnt/ enabledyes gpgcheckno 注意此模块只帮助配置yum仓库,但如果仓库里没有软件包安装一样会失败。所以可以手动去挂载光驱到/mnt目录 # mount /dev/cdrom /mnt 删除/etc/yum.repos.d/local.repo配置文件 master# ansible group1 -m yum_repository -a namelocal stateabsent yum模块(重点) yum模块用于使用yum命令来实现软件包的安装与卸载。 使用yum安装一个软件前提:group1的机器上的yum配置都已经OK master# ansible group1 -m yum -a namevsftpd statepresent 使用yum安装httpd,httpd-devel软件,statelatest表示安装最新版本 master# ansible group1 -m yum -a namehttpd,httpd-devel statelatest 使用yum卸载httpd,httpd-devel软件 master# ansible group1 -m yum -a namehttpd,httpd-devel stateabsent service模块(重点) service模块用于控制服务的启动,关闭,开机自启动等。 启动vsftpd服务并设为开机自动启动 master# ansible group1 -m service -a namevsftpd statestarted enabledon 关闭vsftpd服务并设为开机不自动启动 master# ansible group1 -m service -a namevsftpd statestopped enabledfalse script模块 script模块用于在远程机器上执行本地脚本。 在master上准备一个脚本 master# vim /tmp/1.sh #!/bin/bash mkdir /tmp/haha touch /tmp/haha/{1..10} ​ 在group1的远程机器里都执行master上的/tmp/1.sh脚本此脚本不用给执行权限) master# ansible group1 -m script -a /tmp/1.sh 扩展: 使用shell脚本实现在group1的被管理机里的mariadb里创建一个abc库 #!/bin/bash ​ yum install mariadb-server -y   /dev/null ​ systemctl start mariadb systemctl enable mariadb ​ mysql EOF create database abc; quit EOF ​ 把上面的脚本使用script模块在group1被管理机里执行即可 command与shell模块 两个模块都是用于执行linux命令的,这对于命令熟悉的工程师来说用起来非常high。 shell模块与command模块差不多command模块不能执行一些类似$HOME,,,|等符号但shell可以) master# ansible -m command group1 -a useradd user2 master# ansible -m command group1 -a id user2 ​ master# ansible -m command group1 -a cat /etc/passwd |wc -l --报错 master# ansible -m shell group1 -a cat /etc/passwd |wc -l --成功 ​ master# ansible -m command group1 -a cd $HOME;pwd   --报错 master# ansible -m shell  group1 -a cd $HOME;pwd   --成功 注意: shell模块并不是百分之百任何命令都可以,比如vim或ll别名就不可以。不建议大家去记忆哪些命令不可以大家只要养成任何在生产环境里的命令都要先在测试环境里测试一下的习惯就好。
http://www.huolong8.cn/news/150720/

相关文章:

  • 南京门户网站网站制作企业有哪些
  • 网站建设技术线路选择ktv网站模板
  • 怀来县住房和城乡规划建设局网站中卫网红美食打卡地
  • 计算机网络资源网站建设论文电商平台开发需要哪些技术人员
  • 南京网站南京网站开发住房和城乡建设部监理网站
  • 猫扑网站开发的网络游戏光遇网页制作素材
  • 做外链的博客网站嵌入式开发要学哪些课程
  • 做网站销售有前景吗ps简单网页设计模板图片
  • wordpress单图模式广安seo外包
  • 一个虚拟空间可以做两个网站吗三门峡网站设计
  • 深圳企业网站定制公司wordpress转换为中文版
  • 网站后台会员管理网站设网站设计
  • 那个免费做微信订阅号的网站海南省建设培训与职业资格注册中心网站
  • 商丘睢阳区市政建设局网站景安安装wordpress提示错误
  • 网站建设流程总结邢台163信息网
  • 苏州市建设工程质量监督站网站网站子目录设计
  • 沈阳中联做网站如何知道一个网站做的什么推广
  • 公司网站建设注意软文推广怎么做
  • 菠菜网站建设重庆自助企业建站模板
  • 站长之家统计中国建设工程造价管理协会网站招聘
  • 网站设计公司青岛兰州建设一个网站多少钱
  • 网站建设坂田做网站天津
  • 娃哈哈网站建设策划书如何做网站焦点图
  • 潍坊网站制作企业国内小型电商平台有哪些
  • asp建设的网站制作南京专业网站制作公司有哪些
  • 高新网站建设多少钱赤峰做网站公司
  • 企业服饰网站模板设计公司和装修公司的区别
  • 网站免费注册app制作软件企业
  • 制作网站最新工具网站备案号被收回
  • 网站开发项目安全加固的要求discuz系统