信阳网站开发公司电话大型网站开发软件

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

信阳网站开发公司电话,大型网站开发软件,wordpress coming soon,外贸网站怎么推广目录 一、运维自动化工具有哪些 二、Ansible 概述 1、Ansible 概念 2、Ansible 特点 3、Ansible 工作流程 三、安装部署Ansible 1、环境部署 2、管理节点安装 Ansible 3、查看Ansible相关文件 4、配置主机清单 5、免密管理 ssh-keygen 5.1、测试连通性 5.2、简洁输…目录 一、运维自动化工具有哪些 二、Ansible 概述 1、Ansible 概念 2、Ansible 特点 3、Ansible 工作流程 三、安装部署Ansible 1、环境部署 2、管理节点安装 Ansible 3、查看Ansible相关文件 4、配置主机清单 5、免密管理 ssh-keygen 5.1、测试连通性 5.2、简洁输出 四、Ansible 命令行模块 1、command 模块 2、shell 模块 3、cron 模块 4、user 模块 5、group 模块 6、copy 模块 7、file 模块 8、hostname 模块 9、ping 模块 10、yum 模块 11、service/systemd 模块 12、script 模块 13、setup 模块 五、inventory 主机清单 1、简单配置 2、变量 2.1、主机变量 2.2、组变量 2.3、组嵌套 一、运维自动化工具有哪些 AnsibleAnsible是一种基于Python开发的自动化工具用于配置管理、应用部署和任务自动化。它使用SSH协议来与远程主机通信并使用Playbooks来定义任务和配置PuppetPuppet是一种基于模型驱动的自动化工具用于配置管理和自动化部署。它使用Puppet语言来描述系统配置并通过代理在远程主机上执行配置ChefChef是另一种配置管理工具它使用Ruby语言来定义系统配置并通过Chef客户端在远程主机上执行配置SaltStackSaltStack是一种事件驱动的自动化工具用于配置管理、远程执行和监控。它使用Python语言和ZeroMQ消息队列来实现高效的通信和自动化 二、Ansible 概述 1、Ansible 概念 Ansible是一个基于Python开发的配置管理和应用部署工具现在也在自动化管理领域大放异彩。它融合了众多老牌运维工具的优点Pubbet和Saltstack能实现的功能Ansible基本上都可以实现Ansible能批量配置、部署、管理上千台主机。比如以前需要切换到每个主机上执行的一或多个操作使用Ansible只需在固定的一台Ansible控制节点上去完成所有主机的操作Ansible是基于模块工作的它只是提供了一种运行框架它本身没有完成任务的能力真正执行操作的是Ansible的模块 比如copy模块用于拷贝文件到远程主机上service模块用于管理服务的启动、停止、重启等Ansible其中一个比较鲜明的特性是Agentless即无Agent的存在它就像普通命令一样并非C/S软件也只需在某个作为控制节点的主机上安装一次Ansible即可通常它基于ssh连接来控制远程主机远程主机上不需要安装Ansible或其它额外的服务使用者在使用时在服务器终端输入命令或者playbooks会通过预定好的规则将playbook拆解为play再组织成ansible可以识别的任务调用模块和插件根据主机清单通过SSH将临时文件发给远程的客户端执行并返回结果执行结束后自动删除Ansible的另一个比较鲜明的特性是它的绝大多数模块都具备幂等性(idempotence)。所谓幂等性指的是多次操作或多次执行对系统资源的影响是一致的。比如执行 systemctl stop xxx 命令来停止服务当发现要停止的目标服务已经处于停止状态 它什么也不会做所以多次停止的结果仍然是停止不会改变结果它是幂等的而 systemctl restart xxx 是非幂等的Ansible的很多模块在执行时都会先判断目标节点是否要执行任务所以可以放心大胆地让Ansible去执行任务重复执行某个任务绝大多数时候不会产生任何副作用 2、Ansible 特点 部署简单只需在主控端部署Ansible环境 被控端无需做任何操作默认使用SSH协议设备进行管理主从集中化管理配置简单、功能强大、扩张性强支持API及自定义模块,可以通过Pyhton轻松扩展通过playbooks 来定制强大的配置、状态管理对云计算平台、大数据都有很好的支持 3、Ansible 工作流程 Ansible 基于模块化工作本身没有批量部署的能力真正具有批量部署的是Ansible所运行的模块Modules Ansible 只是提供了一种框架在 Ansible 管理体系中存在着管理节点Control Node和被管理节点Managed Node两种角色 被管理节点通常称之为资产会放在主机清单Inventory文件中Inventory 其实就是由 Ansible 所管理的主机形成的。在管理节点上Ansible 将 Ad-Hoc批量执行单条命令即单模块或者 Playbook任务剧本转化为 Python 脚本最终通过 ssh 网络协议将这些 Python 脚本传递到被管理节点在被管理服务器上依次执行并且会实时将结果返回给管理节点执行完后进行清理模块或命令。返回结果顺序根据网络、被管理服务器本身性能等因素有关 三、安装部署Ansible 1、环境部署 节点名称IP是否安装Ansiblecontrol 管理节点172.16.88.44是managed-1 被管理节点172.16.88.55否managed-2 被管理节点172.16.88.66否 1关闭所有设备的防火墙和核心防护 systemctl stop firewalld setenforce 0 2修改三台设备的主机名方便区分 [rootlocalhost ~]#hostnamectl set-hostname control [rootlocalhost ~]#bash[rootlocalhost ~]#hostnamectl set-hostname managed-1 [rootlocalhost ~]#bash[rootlocalhost ~]#hostnamectl set-hostname managed-2 [rootlocalhost ~]#bash 3管理节点配置本地的/etc/hosts文件 echo 172.16.88.44 control /etc/hosts echo 172.16.88.55 managed-1 /etc/hosts echo 172.16.88.66 managed-2 /etc/hosts 2、管理节点安装 Ansible yum install -y epel-release #先安装epel源 yum install -y ansible #再安装ansible ansible –version #查看ansible版本 3、查看Ansible相关文件 tree /etc/ansible/ #查看ansible目录结构ll /etc/ansible/ #查看ansible相关文件详细信息 4、配置主机清单 vim /etc/ansible/hosts [webs] #配置组名 172.16.88.55 #组里包含的被管理的主机IP地址或主机名主机名需要先修改/etc/hosts文件[dbs] 172.16.88.66 5、免密管理 ssh-keygen 用于生成SSH密钥对的命令行工具。它通常用于创建公钥和私钥以便进行安全的SSH通信 #生成 SSH 密钥对 ssh-keygen -t rsa # 一直回车

rsa表示生成RSA密钥对RSA是一种非对称加密算法

ls .ssh/

id_rsa 是私钥文件id_rsa.pub 是公钥文件#ssh登录到远程管理节点在ssh客户端即control服务器上生成known_hosts文件

ssh root172.16.88.55 ssh root172.16.88.66 ls .ssh/ #known_hosts 文件存放SSH服务器的公钥#将本地主机上的SSH公钥复制到远程主机 sshpass -p 123 ssh-copy-id root172.16.88.55 sshpass -p 123 ssh-copy-id root172.16.88.66 5.1、测试连通性 1测试本机 ansible localhost -m ping 2分别测试 managed-1 和 mansged-2观察返回信息 ansible webs -m ping ansible dbs -m ping 返回结果的颜色 绿色执行成功并且不需要做改变的操作黄色执行成功并且对目标主机做变更红色执行失败 5.2、简洁输出 ansible 172.16.88.55 -m ping -o ansible 172.16.88.66 -m ping -o 四、Ansible 命令行模块 指的是在不使用 Playbook 的情况下直接使用 ansible 命令行工具执行临时命令 这些命令通常是一次性的、针对特定任务的而不需要编写长期维护的 Playbook。通过 AD-Hoc 命令可以快速地在远程主机上执行特定的任务比如文件操作、软件安装、服务管理等 命令格式 ansible 组名 -m 模块 -a 参数列表 #默认模块为command可省略 ansible-doc -l #列出所有已安装的模块按q退出 1、command 模块 command 模块允许用户在目标主机上执行特定的命令主要功能是在远程主机执行命令此为默认模块可忽略 -m 选项 此命令不支持 \(VARNAME | ; 等可能用shell模块实现 注意此模块不具有幂等性 幂等性是指在对系统进行操作时无论执行多少次系统的状态都保持一致的特性 以下是 command 模块的一般用法 格式ansible host-pattern [-m command] -a command #host-pattern 是要操作的目标主机或主机组 #-m command 指定要使用的模块是 command #-a command 传递给模块的参数即要在目标主机上执行的命令 ansible-doc -s command #-s 列出指定模块的描述信息和操作动作 ansible 172.16.88.55 -m command -a date #指定 ip 执行 date ansible webs -m command -a date #指定组执行 date ansible dbs -m command -a date ansible all -m command -a date #all 代表所有 hosts 主机 ansible all -a ls /home #如省略 -m 模块则默认运行 command 模块 常用的参数 chdir在远程主机上运行命令前提前进入目录 creates判断指定文件是否存在如果存在不执行后面的操作 removes判断指定文件是否存在如果存在执行后面的操作 #在远程主机上运行命令前提前进入/home目录并查看当前目录 ansible webs -m command -a chdir/home ls ./ #removes判断指定文件是否存在如果存在执行后面的操作 ansible webs -m command -a removes/mnt/1.txt ls /mnt #creates判断指定文件是否存在如果存在不执行后面的操作 ansible webs -m command -a creates/mnt/1.txt ls /mnt 2、shell 模块 在远程主机执行命令相当于调用远程主机的shell进程然后在该shell下打开一个子shell运行命令支持管道符号等功能 和command相似用shell执行命令支持各种符号比如*\) 此模块不具有幂等性 ansible-doc -s shell #-s 列出指定模块的描述信息和操作动作 #在名为 webs 的一组主机上通过向标准输入传递密码将用户 mimi 的密码更改为 123 ansible webs -m shell -a echo 123456 |passwd –stdin cxc #获取名为 webs 的主机上网络接口 ens33 的第二行输出并提取其中的第二个字段 ansible webs -m shell -a echo \((ifconfig ens33 | awk NR2 {print \)2}) | cut -d -f2 #在名为 dbs 的主机上执行一个类似的命令但是它只是打印网络接口 ens33 的第二行输出 ansible dbs -m shell -a echo \((ifconfig ens33 | awk NR2 {print \\)2}) 3、cron 模块 用于管理 cron 作业定时任务支持时间minutehourdaymonthweekday 在远程主机定义任务计划。其中有两种状态statepresent表示添加可以省略absent表示移除 minute/hour/day/month/weekday分/时/日/月/周 job任务计划要执行的命令 name任务计划的名称 ansible-doc -s cron #-s 列出指定模块的描述信息和操作动作 #在名为 dbs 的主机上设置一个 cron 任务。具体来说它使用了 Ansible 的 cron 模块传递了三个参数minute/2 表示每两分钟执行一次job/bin/echo welcome to China 表示要执行的命令是输出 welcome to Chinanamecrontab01 表示这个任务的名称是 crontab01 ansible dbs -m cron -a minute/2 job/bin/echo welcome to China namecrontab01#查看名为 dbs 的主机当前用户的 crontab 列表 ansible dbs -a crontab -l#移除指定的计划任务假如该计划任务没有取名字nameNone即可 ansible dbs -m cron -a namecrontab01 stateabsent 4、user 模块 管理系统用户的模块。它允许用户创建、删除和修改系统用户以及相关属性 常用参数 name用户名必选参数 statepresent|absent创建账号或者删除账号present表示创建absent表示删除 systemyes|no是否为系统账号 uid用户uid group用户基本组 shell默认使用的shell move_homeyse|no如果设置的家目录已经存在是否将已经存在的家目录进行移动 password用户的密码建议使用加密后的字符串 comment用户的注释信息 removeyes|no当stateabsent时是否删除用户的家目录 ansible-doc -s user #-s 列出指定模块的描述信息和操作动作 #在名为 dbs 的主机上创建一个用户yiyi ansible dbs -m user -a namexiewei #查看名为 dbs 的主机上 /etc/passwd 文件的末尾10行内容 ansible dbs -a tail /etc/passwd #删除用户yiyi没有指定removeyes参数所以该用户的家目录没有被删除 ansible dbs -m user -a namexiewei stateabsent #查看名为 dbs 的主机上 /etc/passwd 文件的末尾10行内容 ansible dbs -m command -a tail /etc/passwd ansible dbs -a ls /home/ #查看名为 dbs 的主机上的家目录 #删除用户yiyi指定removeyes参数该用户的家目录也会被删除 ansible dbs -m user -a namedh stateabsent removeyes #查看名为 dbs 的主机上 /etc/passwd 文件的末尾10行内容 ansible dbs -m command -a tail /etc/passwd #查看名为 dbs 的主机上的家目录 ansible dbs -a ls /home/ 5、group 模块 管理系统用户组的模块。它允许用户创建、删除和修改系统用户组以及相关属性 ansible-doc -s group #-s 列出指定模块的描述信息和操作动作 #在名为 webs 的主机上创建一个系统组为nginx ansible webs -m group -a namenginx gid1314 systemyes #查看名为 webs 的主机上 /etc/group 文件的末尾10行内容 ansible webs -a tail /etc/group #在名为 webs 的主机上创建一个名为 nginx-test 的系统用户并添加到nginx系统组 ansible webs -m user -a namenginx-test uid2000 systemyes groupnginx #在名为 webs 的主机上查看 /etc/passwd 文件的末尾10行内容 ansible webs -a tail /etc/passwd #在名为 webs 的主机上查看名为 nginx-test 的用户的身份信息 ansible webs -a id nginx-test 6、copy 模块 从 ansible 服务器主控端复制文件到远程主机srcfile 如果是没指明路径则为当前目录或当前目录下的 files 目录下的 file 文件 常用参数 dest指出复制文件的目标及位置使用绝对路径如果是源目录指目标也要是目录如果目标文件已经存在会覆盖原有的内容 src指出源文件的路径可以使用相对路径或绝对路径支持直接指定目录如果源是目录则目标也要是目录 mode指出复制时目标文件的权限 owner指出复制时目标文件的属主 group指出复制时目标文件的属组 content指出复制到目标主机上的内容不能与 src 一起使用 ansible-doc -s copy #-s 列出指定模块的描述信息和操作动作 #在名为 webs 的主机上将名为 /etc/fstab 的文件复制到名为 /opt/fstab.bak 的文件中 ansible webs -m copy -a src/etc/fstab dest/opt/fstab.bak ownerroot mode777 #在名为 webs 的主机上查看 /opt 目录的详细列表 ansible webs -a ls -l /opt #在名为 webs 的主机上查看名为 /opt/fstab.bak 的文件的内容 ansible webs -a cat /opt/fstab.bak #在名为 webs 的主机上将字符串 hello world 写入名为 /opt/1.txt 的文件中没有目标文件会自动创建 ansible webs -m copy -a contenthello world dest/opt/1.txt
#在名为 webs 的主机上查看名为 /opt/1.txt 的文件的内容 ansible webs -a cat /opt/1.txt 7、file 模块 设置文件属性创建软链接等关键字选项如下 path #指定文件路径 state #文件状态 有新建(touch) 删除(absent) 文件夹(directory) 连接文件(link)等 src #源文件 mode #权限 owner #属主 group #属组 recurse #递归修改属性时有效 ansible-doc -s file #-s 列出指定模块的描述信息和操作动作 1设置文件属性 #在名为 webs 的主机上设置文件属性修改文件的属主属组权限等 ansible webs -m file -a ownerdh groupdh mode644 path/opt/fstab.bak #在名为 webs 的主机上查看 /opt 目录的详细列表 ansible webs -a ls -l /opt 2创建链接文件  #在名为 webs 的主机上设置/opt/fstab.link为/opt/fstab.bak的链接文件 ansible webs -m file -a path/opt/fstab.link src/opt/fstab.bak statelink #在名为 webs 的主机上查看 /opt 目录的详细列表 ansible webs -a ls -l /opt 3创建一个文件 ansible webs -m file -a path/opt/123.txt statetouch4删除一个文件 ansible webs -m file -a path/opt/123.txt stateabsent 8、hostname 模块 用于管理远程主机上的主机名一般不使用模块如果使用模块且模块中定义多个被管理节点那么模块中的所有被管理节点的主机名会一致 ansible-doc -s hostname #-s 列出指定模块的描述信息和操作动作 #将名为 dbs-node1 的主机名应用到名为 dbs 的主机上 ansible dbs -m hostname -a namedbs-node1 9、ping 模块 检测远程主机的连通性 ansible-doc -s ping #-s 列出指定模块的描述信息和操作动作 ansible all -m ping #测试是否连通所有的主机 10、yum 模块 yum 管理软件包只支持 RHELCentOSfedora不支持 Ubuntu 其它版本在远程主机上安装与卸载软件包 常用参数 name参数必须参数用于指定需要管理的软件包 state参数用于指定软件包的状态 默认值为。present表示确保软件包已经安装除了。present其他可用值有 installed、latest、absent、removed其中 installed 与present 等效latest 表示安装 yum 中最新的版本absent和removed 等效表示删除对应的软件包。 disable_gpg_check参数 用于禁用对 rpm 包的公钥 gpg 验证。默认值为 no表示不禁用验证设置为 yes 表示禁用验证即不验证包直接安装。在对应的 yum 源没有开启 gpg 验证的情况下需要将此参数的值设置为 yes否则会报错而无法进行安装。 enablerepo参数用于指定安装软件包时临时启用的 yum 源。假如你想要从A源中安装软件但是你不确定A源是否启用了你可以在安装软件包时将此参数的值设置为 yes即使A源的设置是未启用也可以在安装软件包时临时启用A源。 disablerepo参数用于指定安装软件包时临时禁用的 yum 源。某些场景下需要此参数比如当多个 yum 源中同时存在要安装的软件包时你可以使用此参数临时禁用某个源这样设置后在安装软件包时则不会从对应的源中选择安装包。 #其中enablerepo 参数和 disablerepo 参数可以同时使用#如 name   所安装的包的名称 state    present—安装 latest—安装最新的, absent— 卸载软件 update_cache   强制更新yum的缓存 conf_file   指定远程yum安装时所依赖的配置文件安装本地已有的包 disable_pgp_check  是否禁止GPG checking只用于presentor latest disablerepo   临时禁止使用yum库。 只用于安装或更新时 enablerepo   临时使用的yum库。只用于安装或更新时 ansible-doc -s yum #-s 列出指定模块的描述信息和操作动作 #在名为 webs 的主机上安装httpd服务 ansible webs -m yum -a namehttpd #在名为 webs 的主机上卸载httpd服务 ansible webs -m yum -a namehttpd stateabsent #其他用法 ansible webs -m yum -a namenginx statepresent enablerepoepel
#启用epel源进行安装nginxansible webs -m yum -a name* statelastest excludekernel,foo #升级除kernel和foo开头以外的所有包建议不要 11、service/systemd 模块 可以启动、停止、重新启动和重新加载系统服务用于管理远程主机上的管理服务的运行状态常用的参数 常用参数 name被管理的服务名称 statestarted|stopped|restarted动作包含启动关闭或者重启 enabledyes|no表示是否设置该服务开机自启 runlevel如果设定了enabled开机自启去则要定义在哪些运行目标下自启动 ansible-doc -s service #-s 列出指定模块的描述信息和操作动作 #在名为 webs 的主机上查看httpd服务状态 ansible webs -a systemctl status httpd #在名为 webs 的主机上开启httpd服务并设置开机自启动 ansible webs -m service -a enabledtrue namehttpd statestarted 12、script 模块 在远程主机上运行 ansible 服务器上的脚本无需执行权限本身不执行此模块不具有幂等性 ansible-doc -s script #-s 列出指定模块的描述信息和操作动作 #编写 vim test.sh #!/bin/bash echo welcome to my world /opt/script.txt#在远程主机上运行 ansible 服务器上的脚本 chmod x test.sh #必须添加可执行权限才可运行脚本 ansible dbs -m script -a test.sh ansible dbs -a cat /opt/script.txt 13、setup 模块 收集有关远程主机的各种系统信息。这些信息包括操作系统类型、IP 地址、内存和 CPU 使用情况、磁盘空间以及许多其他有用的系统级信息。这些 facts 信息可以直接以变量的形式使用但是如果主机较多会影响执行速度。可以使用 gather_facts: no 来禁止 Ansible 收集 facts 信息 常用参数 gather_subset #指定要收集的子集信息例如all, network, hardware, virtual等 gather_timeout#设置收集信息的超时时间以秒为单位 filter #用于过滤输出信息可以根据需要选择性地显示特定信息可配合正则表达式 fact_path #指定一个目录将收集到的信息保存为 JSON 文件 retries #在发生连接问题时尝试重新连接的次数 ansible-doc -s setup #-s 列出指定模块的描述信息和操作动作 #获取webs组主机的facts信息 ansible webs -m setup #使用filter可以筛选指定的facts信息如筛选以 ipv4 结尾的信息
ansible webs -m setup -a filter*ipv4 五、inventory 主机清单 inventory主机清单是一个配置文件用于定义Ansible可以操作的主机和组。这个文件可以是静态的也可以是动态生成的用于指定主机的IP地址、主机名以及这些主机的分组信息 Inventory支持对主机进行分组每个组内可以定义多个主机每个主机都可以定义在任何一个或多个主机组内 官方文档https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html
1、简单配置 如果是名称类似的主机可以使用列表的方式标识各个主机 1指定多个被管理的主机地址 [dbs] 172.16.88.55 172.16.88.66 …… 2指定ssh端口为非默认的端口 [dbs] 172.16.88.55:777 172.16.88.66:666 …… 3指定连续的主机地址 [dbs] 172.16.88.[10:20][dbs] db-[a:f].example.org #支持匹配a~f 2、变量 在 Ansible Inventory 中变量是用来存储主机和组级别的数据的元素。这些变量可以帮助您在执行 Ansible Playbook 时动态地为不同的主机或组提供不同的配置信息 变量名说明ansible_hostansible连接节点时的IP地址ansible_port连接对方的端口号ssh连接时默认为22ansible_user连接对方主机时使用的主机名。不指定时将使用执行命令的用户ansible_password连接时的用户的ssh密码仅在未使用密钥对验证的情况下有效ansible_ssh_private_key_file指定密钥认证ssh连接时的私钥文件ansible_ssh_common_args提供给ssh、sftp、scp命令的额外参数ansible_become允许进行权限提升ansible_become_method指定提升权限的方式例如sudo/su/runas等ansible_become_user提升为哪个用户的权限默认提升为rootansible_become_password提升为指定用户权限时的密码 2.1、主机变量 写法1 [webs] 172.16.88.55 ansible_port22 ansible_userroot ansible_passwordCxC666666 172.16.88.66 ansible_port22 ansible_userroot ansible_passwordCxC666666 #webs组中被控制端 172.16.88.55 的端口号为22登录时用户是root密码为CxC666666 写法2 [webs] 172.16.88.1[2:3] ansible_port22 ansible_userroot ansible_passwordCxC666666 #如果是名称类似的主机可以使用列表的方式标识各个主机 写法3 [webs] 172.16.88.55:22 172.16.88.66:1234 #默认ssh管理时的端口为22若不是22则直接在被管理ip后加冒号和对应端口号 2.2、组变量 [webs] 172.16.88.55 172.16.88.66#表示webs组内所有主机定义变量控制时使用root账户密码为CxC666666 [webs:vars]
ansible_userroot ansible_passwordCxC666666#表示为所有组的所有主机定义变量使用ssh远程管理时都是22端口 [all:vars]
ansible_port22 2.3、组嵌套 #webs组 [webs] 172.16.88.55 172.16.88.66#dbs组 [dbs] 172.16.88.33#组内嵌为onlys [onlys:vars] webs dbs #表示 onlys 组的成员即 vars 包括 webs和dbs