国内哪家公司做网站最好,wordpress 说明书,怎么查看网站是否做百度排名,南宁网站建设博信在运行Windows操作系统的主机LAPTOP-OUR52V78上安装有VMware Workstation Player软件。因为Windows自带的虚拟机平台软件Hyper-V使用难度较大#xff0c;而且关于在Hyper-V上运行虚拟机#xff0c;修改虚拟机错误的相关技术博客和文章的数量稀少Hyper-V使用难度较大而且关于在Hyper-V上运行虚拟机修改虚拟机错误的相关技术博客和文章的数量稀少不利于顺利进行Ansible实战所以使用VMware Workstation Player软件并通过VMware Workstation Player软件创建用来进行Ansible实战的虚拟机。同时只需要采用VMware Workstation Player来进行Ansible实战不需要使用VMware Workstation因为VMware Workstation过于丰富的界面设置选项会将本应用于Ansible实战的注意力转移到虚拟机管理上去而虚拟机管理是红帽RHCSA红帽认证系统管理员认证的主要内容并不是将Ansible作为主要考察内容的RHCE红帽认证工程师认证的主要内容所以为了集中注意力屏蔽掉虚拟机管理的细节只使用VMware Workstation Player来进行Ansible实战的做法是合理的。另外VMware Workstation软件的版本是17而不是16也是为了避免软件版本对Ansible实战产生可能的Bug进而影响Ansible实战的进度。
因为Ansible是一款开源的软件所以我们能够通过软件包管理工具免费下载到ansible软件。同时Ansible是一款自动化运维工具在传统的运维工作中假如一位运维人员负责生产环境下的20台服务器那么对于这一个运维人员来说一台接一台的在生产环境的20台服务器上进行相同的日志查看、网卡管理、软件更新、用户管理等工作就成为无法避免的事情也是影响运维效率的一大因素。而Ansible自动化运维工具的使用使得下面的场景成为可能在生产环境中新引入1台服务器一共21台服务器。其中新引入的1台服务器作为控制节点安装Ansible软件包控制其余的20台服务器。原有的20台服务器作为被管理节点不需要安装Ansible软件包仍照常执行生产任务。所以Ansible是一款开源的自动化运维工具。
Ansible的底层是Python和SSH这两款同时被在安装Linux系统时自动安装的软件。因为Ansible基于Python和SSH软件作为控制节点的服务器通过使用Ansible软件对作为被管理节点的服务器发出的所有命令最终都会转化为经由SSH传输并且在作为被管理节点的主机上执行的Python代码而生产环境中的服务器在被安装Linux系统时就已经自动安装了Python和SSH。所以在上面的例子中作为被管理节点的服务器不需要安装Ansible软件包只有作为控制节点的主机才需要安装Ansible软件包。
基于Ansible的特性为了进行Ansible实战VMware Workstation Player上至少需要三台虚拟机因为如果只有两台虚拟机那么将不利于学习在作为控制节点的主机上进行作为被控制节点的服务器的分组。因为Ansible软件对于支持它运行的操作系统的要求是CentOS8和RHEL9这两款Linux发行版的优于CentOS7这款Linux发行版而我们仅需要一台虚拟机让它作为控制节点的主机并且RHEL9这款Linux发行版只有在红帽官网上注册账号后才能下载到且来自中国区的下载请求会被红帽官方列入管控行为所以CentOS8被选择作为运行Ansible软件的操作系统安装在一台虚拟机上。另外的两台虚拟机可以选择安装曾经同样由红帽推出的CentOS7操作系统。值得注意的一点是三台虚拟机的虚拟网络适配器应该连接在同一个虚拟网络上即如果安装有CentOS8操作系统的作为控制节点的主机的虚拟网络适配器连接到了VMnet8这个默认采用NAT模式的虚拟网络上时安装有CentOS7操作系统的作为被控制节点的主机的虚拟网络适配器也应该同时连接到VMnet8这个默认采用NAT模式的虚拟网络。当然考虑到作为控制节点的主机需要使用yum软件包管理工具进行ansible软件包的安装使用默认采用NAT模式的VMnet8虚拟网络来连接三台虚拟机的做法是更合理的。
运行在VMware Workstation Player上的三台虚拟机的简介 操作系统名称IP地址角色CentOS8 Stream192.168.133.148控制节点CentOS7192.168.133.147被控制节点CentOS7192.168.133.146被控制节点
当在VMware Workstation Player上创建三台虚拟机并安装好对应的操作系统、配置好对应的虚拟网络适配器之后我们需要对作为控制节点的主机进行Ansible软件的安装。虽然当初在安装有CentOS8 Stream操作系统的主机上作为root用户使用yum install ansible命令安装ansible时并没有提前下载epel源但是在文心一言关于“如何在Linux系统上安装Ansible软件”的回答中在安装ansible之前应该先下载epel源被提到我猜测是因为CentOS8 Stream操作系统默认的软件源中已包含可供下载的ansible软件所以在作为控制节点的安装有CentOS8 Stream操作系统的主机中直接使用yum install ansible命令安装ansible软件是合理的。下图显示已被安装好的ansible软件 [rootlocalhost ~]# rpm -qa | grep ansible ansible-core-2.15.3-1.el8.x86_64 [rootlocalhost ~]# rpm -qa | grep ansible rpm -qa命令表示列出已经安装在CentOS8 Stream操作系统中的所有rpm软件包-q参数表示query查询-a参数表示所有-qa即表示查询所有软件包grep ansible表示在列出的已经安装在CentOS8 Stream操作系统中的所有rpm软件包中过滤出包含有ansible的软件包。ansible-core-2.15.3-1.el8.x86_64即表示ansible软件包已经被安装在作为控制节点的主机中。 [rootlocalhost ~]# ansible --version ansible [core 2.15.3] config file /etc/ansible/ansible.cfg configured module search path [/root/.ansible/plugins/modules, /usr/share/ansible/plugins/modules] ansible python module location /usr/lib/python3.11/site-packages/ansible ansible collection location /root/.ansible/collections:/usr/share/ansible/collections executable location /usr/bin/ansible python version 3.11.4 (main, Aug 11 2023, 13:46:19) [GCC 8.5.0 20210514 (Red Hat 8.5.0-20)] (/usr/bin/python3.11) jinja version 3.1.2 libyaml True [rootlocalhost ~]# 运行ansible --version命令当出现图中所示的包含ansible的版本信息在内的ansible软件配置信息时即表示ansible已被正确下载并安装在作为管理节点的主机中。
在作为控制节点的主机成功安装Ansible软件之后作为一般用户user需要创建一个文件夹专门用于存放Ansible相关文件可以通过mkdir ~/ansible命令在当前用户user的家目录下创建名为ansible的文件夹。在该文件夹下有两个基本的配置文件一个是inventory文件作用是列出作为被管理节点的所有主机另一个是ansible.cfg文件作用是确定被使用的inventory文件、确定作为管理节点的主机在通过SSH连接到作为被管理节点的服务器上时使用被管理节点服务器上的哪个用户来执行Python命令、确定管理节点主机在通过SSH连接到被管理节点服务器上时需不需要提示输入SSH连接的密码、确定在被管理节点服务器上是否需要提权到另一个用户、确定在被管理节点服务器上提权到另一个用户的方法、确定在被管理节点服务器上提权到哪个用户、确定在被管理节点服务器上进行提权操作时是否需要提示输入密码。在作为管理节点的服务器上的inventory和ansible.cfg文件内容如下所示 [dqxlocalhost ansible]$ pwd /home/dqx/Desktop/ansible [dqxlocalhost ansible]$ ls -alh total 8.0K drwxrwxr-x. 2 dqx dqx 42 Oct 31 06:22 . drwxr-xr-x. 3 dqx dqx 21 Oct 31 05:41 .. -rw-rw-r--. 1 dqx dqx 157 Oct 31 06:22 ansible.cfg -rw-rw-r--. 1 dqx dqx 42 Oct 31 05:44 inventory [dqxlocalhost ansible]$ cat ansible.cfg [defaults] inventory./inventory remote_userdqx ask_passfalse [privilege_escalation] becomefalse become_methodsudo become_userroot becom_ask_passfalse [dqxlocalhost ansible]$ cat inventory 192.168.133.147 192.168.133.146 [centos] 192.168.133.147 [dqxlocalhost ansible]$ 运行在VMware Workstation Player上的三台虚拟机的用户情况 操作系统名称IP地址角色非root用户root用户CentOS8 Stream192.168.133.148控制节点dqxrootCentOS7192.168.133.147被控制节点dqxrootCentOS7192.168.133.146被控制节点dqxroot
三台虚拟机中的用户情况如上表所示。回到shell的输出结果当中pwd表示列出当前的工作目录 /home/dqx/Desktop/ansible是pwd命令在shell中的执行结果表示当前工作目录是/home/dqx/Desktop/ansiblels -alh命令表示列出当前工作目录下包括以.开头作为文件名称的隐藏文件在内的所有文件的详细信息并且将文件的大小的单位转换为合适的单位使得更加易读。在ls -alh的返回结果中ansible.cfg与inventory即为两个ansible配置文件。通过使用cat命令将ansible.cfg文件的内容输出到shell中从[defaults]到ask_passtrue之间的所有行都属于[default]块的配置内容从[privilege_escalation]到becom_ask_passfalse之间的所有行都属于[privilege_escalation]块的配置内容。inventory./inventory表示ansible.cfg配置文件使用的inventory文件是和ansible.cfg文件在同一目录下并且同层级的inventory文件remote_userdqx表示作为管理节点的主机在通过SSH连接到作为被管理节点的服务器上时使用被管理节点服务器上的dqx用户来执行Python命令。ask_passfalse表示管理节点主机在通过SSH连接到被管理节点服务器上时不需要提示输入SSH连接的密码但是考虑到没有在管理节点主机上设置为采用基于密钥的认证方法而仍然采用的是基于密码的认证方法所以我们在正式通过Ansible管理被管理节点服务器之前需要设置免密SSH登录。暂时忽略[privilege_escalation]块的配置内容。
要设置免密SSH登录需要在作为管理节点的主机上通过ssh-keygen命令生成一组公钥与私钥之所以要通过该命令生成一组公钥与私钥是因为之前为了让被管理节点服务器允许来自管理节点主机的SSH连接时采用的认证方式是基于密码的认证方式而基于密码的认证方式并不会使得管理节点主机自动生成一组公钥与私钥所以需要通过ssh-keygen命令生成一组公钥与私钥。通过ls -alh ~/.ssh/命令可以查看到在管理节点主机上的公钥与私钥 [dqxlocalhost ~]$ ls -alh ~/.ssh total 16K drwx------. 2 dqx dqx 57 Nov 1 06:55 . drwx------. 19 dqx dqx 4.0K Nov 1 06:40 .. -rw-------. 1 dqx dqx 2.6K Oct 31 05:58 id_rsa -rw-r--r--. 1 dqx dqx 579 Oct 31 05:58 id_rsa.pub -rw-r--r--. 1 dqx dqx 177 Oct 31 05:58 known_hosts [dqxlocalhost ~]$ cat ./.ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDiR5IYRa8M8PSWhwZHyFLCb8pwnsiNyKWyw6SLWRZ48ghJWoeCqH9EqukR/dEc0O11L1CH0cjeq9H9824PlN1MXMXA7rCV7XX5Cu8fWH2a/qezluEtXOvjUWWAk251Zi5traCFzQRPUUJOV9Rqa8SqoknV07AFOnzsTY/YP3Tq16qa9ZAIUBVG2N8axgnshyA4oRGLvE1zodxqWZYQC7egJKw8bB3IyiYGYQbPxzqWaqmsv6op0oFmGOtPmuPMLXuKhzDsUnMPFh7WRWveBWbm40HzUTu7PtpsThEsRpXp33Bt3Ulkj6AXqHD5tQl296hKCiB/r/boLIcSAben3l0wGl5tNFTbDaVgyext8qTA5kb5ruvX4Jf6oTngBpk9hDLSu7XBFQBcWS06D8Gatgt3JNZah4j5BbXcV9dHZ2vtIoDy2iYtIB5Q2DChetLkmee1IUOMJWM4N4n5kGki9Zw3UoBwB2iCp80Lhrlb28gr1WzF60s dqxlocalhost.localdomain [dqxlocalhost ~]$ cat ./.ssh/known_hosts [dqxlocalhost ~]$ cat .ssh/known_hosts 192.168.133.147 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBHb17ZDiFBmpoRrdFAQce1pEbzyLtcGNrXWmWpCxsTcCaeAnLQTzKqAbaq48ZSbxIIzgj4dlpp8Cuy4hb9vWtY8 192.168.133.146 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBDjg1FIrArIYhNXHPfzttOH1UTZEWYIfvbCBnOsO0jf4DTyQ0A6ps3NrwgxWR20whcfTn3LEd6CxvgFxFoDzt6U [dqxlocalhost ~]$ id_rsa即为通过ssh-keygen命令生成的私钥id_rsa.pub即为通过ssh-keygen命令生成的与id_rsa私钥为一对的公钥。因为公钥可以公布私钥不可以公布所以只通过cat ./.ssh/id_rsa.pub命令显示公钥的内容。在ls -alh ~/.ssh的结果中的known_hosts文件表示已被确认身份且不会被冒充的主机在这里已经确定IP地址为192.168.133.147和192.168.133.146的主机也就是作为被管理节点的服务器的身份。
接着将作为管理节点的主机生成的一对公私钥中的公钥传给作为被管理节点的服务器。使用命令ssh-copy-id dqx192.168.133.147, ssh-copy-id root192.168.133.147, ssh-copy-id dqx192.168.133.146, ssh-copy-id root192.168.133.146。 [dqxlocalhost ~]$ ssh-copy-id dqx192.168.133.147 /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: /home/dqx/.ssh/id_rsa.pub /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: WARNING: All keys were skipped because they already exist on the remote system. (if you think this is a mistake, you may want to use -f option) [dqxlocalhost ~]$ ssh-copy-id root192.168.133.147 /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: /home/dqx/.ssh/id_rsa.pub /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: WARNING: All keys were skipped because they already exist on the remote system. (if you think this is a mistake, you may want to use -f option) [dqxlocalhost ~]$ ssh-copy-id dqx192.168.133.146 /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: /home/dqx/.ssh/id_rsa.pub /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: WARNING: All keys were skipped because they already exist on the remote system. (if you think this is a mistake, you may want to use -f option) [dqxlocalhost ~]$ ssh-copy-id root192.168.133.146 /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: /home/dqx/.ssh/id_rsa.pub /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: WARNING: All keys were skipped because they already exist on the remote system. (if you think this is a mistake, you may want to use -f option) [dqxlocalhost ~]$ 四条命令的结果均为All keys were skipped because they already exist on the remote system.说明已经将作为管理节点的主机的公钥传递给了作为被管理节点的两台服务器中进而SSH免密登录设置完成。这时在作为管理节点的主机中包含inventory文件的ansible目录下使用命令ansible all -m ping命令 [dqxlocalhost ansible]$ ansible all -m ping 192.168.133.146 | SUCCESS { ansible_facts: { discovered_interpreter_python: /usr/bin/python }, changed: false, ping: pong } 192.168.133.147 | SUCCESS { ansible_facts: { discovered_interpreter_python: /usr/bin/python }, changed: false, ping: pong } [dqxlocalhost ansible]$ 这就表明Ansible已配置成功。