一、前言
该篇是对本学期Ansible实训第一天内容的原理性总结,主要包括Liunx相关问题等基础性的问题总结以及ansible安装环境的前置部署。
二、Liunx是什么
Linux是一种自由和开放源代码的Unix操作系统,最初由芬兰人Linus Torvalds于1991年创建。与其他许多操作系统不同,Linux被开发和维护由一个全球性的社群共同努力。Linux运行着各种设备,从手机、平板电脑和个人电脑到服务器和超级计算机。 Linux操作系统提供了诸如多用户、多任务、虚拟内存、多进程和多线程等功能,被广泛应用于科学、工程、商业和娱乐等各个领域。
三、为什么服务器多用liunx不用windows
(1)开放源代码
Linux是开源的操作系统,可以自由获得和修改代码。这为服务器中的开发人员提供了更大的灵活性和责任。他们可以自定义和修改操作系统,以满足特定的需求,并为客户提供更好的服务。
(2)安全性
Linux因其高度安全而闻名。与Windows相比,Linux操作系统遭到攻击和破坏的风险更小,因为它的安全性设施更加完善,而且更新更及时。此外,Linux用户权限管理较为严格,可以有效降低用户操作对系统安全造成的威胁。
(3)稳定性
Linux操作系统非常稳定,可以长时间运行而不会出现系统崩溃的问题。这对于需要24/7运行的服务器非常重要,可以为在线商店、社交媒体等提供不间断的服务。
(4)性能优化
Linux操作系统具有优异的性能优化能力,能够根据你的硬件和软件资源提供最佳的性能。Linux操作系统可以轻松承受大型服务器的负载和流量,提供更稳定的服务。
(5)可定制性
Linux操作系统非常用户友好,并在服务器环境中拥有广泛的支持,可以轻松地安装和运行各种脚本和软件。而Windows的操作系统会受到商业授权和版权限制,用户无法自由定制和修改操作系统。
因此,以上几点使得Linux操作系统成为了服务器环境下首选的操作系统,被众多互联网公司和数据中心所青睐。
四、许可证的类别
(1) 宽松式的许可
宽松版许可(Copyleft License)也称为强约束许可, 基本上是在学术研究者、社会团体之间流传的开源许可证。 与公共版许可相比,宽松版许可有更多的限制和要求。 它的特点是:
- 许可证要求代码可以在使用和修改时,必须放在同一许可下。
- 许在广泛语言之间转让代码时,保留了更多的控制权。
- 强化向源代码社区做贡献的文化。
在宽松版许可证之下,每个人可以使用、修改、分发代码,甚至在闭源的项目中使用它们。但是,必须保持相同的许可条件。
① 没有担保
“没有担保”指许可证的授权者不对软件提供任何担保或保证,不保证软件的质量和适用性。这意味着使用者需要自行承担软件使用的风险,如果软件出现问题,授权者不承担任何责任。
② 为所欲为
“为所欲为”指可以自由使用、修改和分发源代码。这意味着使用者可以用宽松版许可证授权的代码做任何他们想做的事情,包括用于商业、私人和公共项目,可以将软件包含在闭源软件中等,没有任何限制。
③ 需要披露原作者
“需要披露原作者”指在分发软件时,需要包含原始许可证文本和版权声明,并清楚地对原作者和贡献者进行署名,以便其他人可以追溯到该软件的起源和贡献,并且可以了解许可证协议的细节和限制。
总之,宽松版许可证授权给用户更多的自由和灵活性,但是用户需要自己承担更大的责任和风险,同时需要遵守许可证的要求,尊重相应的版权和维护社区的互惠共赢精神。
(2)公共版许可
公共版许可(Permissive License)也称为宽泛许可,是指允许代码自由使用、修改和分发的开源许可证。 其特点是:
- 一般不强制使用任何特定声明或授权WiFi的条款。
- 禁止裁剪掉软件的许可通告声明。
- 可以将开源软件用于商业、私人和公共项目。·
- 可以将软件包含在闭源软件中。
- 不保证为每个分发的副本提供源代码。
一些常见的公共版许可证包括MIT许可、BSD许可、Apache许可和ISC许可。
五、Ansible是什么
Ansible是一种自动化IT工具,旨在大规模管理计算机系统和服务器的配置,部署应用程序和编排任务。它可以自动化需要重复进行的任务,例如安装和配置软件,部署和管理应用程序,以及监控和维护网络服务。
Ansible是一款基于Python语言开发的工具,使用SSH和Python来管理远程计算机。它采用简单易懂的声明性语言YAML来描述管理任务,并将这些任务分解成较小的任务。Ansible使用模块来完成任务,支持众多操作系统和平台(包括Linux和Windows),并提供了与虚拟化技术(如Docker和VMware)和云提供商(如AWS和OpenStack)的集成。
Ansible的优点包括:
- 自动化:通过Ansible, 可以实现对大规模计算机系统和服务器的自动化管理。
- 单一控制节点:Ansible只需要一个中心控制节点,无需在每台服务器上安装它的控制程序,从而大大降低了安装和维护的成本。
- 可读性强:Ansible使用简单易懂的YAML语言,简化了复杂任务的编写和管理。
- 可扩展性强:Ansible可以通过编写自定义模块或插件来扩展其功能。
- 社区支持强:Ansible拥有庞大的社区,提供了大量的文档和模板,用户可以轻松从中获取支持。
总之,Ansible是一种高效的IT自动化工具,可以帮助企业和个人更好地管理和维护他们的IT基础设施,提高操作效率和质量。
六、Liunx基础操作
(1)提权操纵
① su switch user --- 切换用户
② sudo super do --- 使用超级用户进行操作
运行ansible时,一般情况下不使用root用户(安全性问题),使用普通用户即可
(2)用户、用户组、密码
① /etc/pwd 用户信息
② /etc/group 用户组信息
③ /etc/shadow 密码信息
(3)下列PWD命令行的含义如下
① root:x:0:0:root:/root:/bin/bash
1. root: 用户名,这里指的是root用户,该用户默认拥有系统中最高的权限。
2. x: 加密密码,实际的加密密码已经存放在shadow文件中,该字段通常为"x"。
3. 0: 用户ID,也被称为UID。0是root用户的默认UID,表示其拥有最高权限。
4. 0: 组ID,也被称为GID。0是root用户所属的组的默认GID,表示其拥有最高权限。
5. root: 注释,通常是一段简要的用户描述信息。
6. /root: 用户主目录,通常是用户的家目录,一般而言,root的主目录在/root,普通用户的在/home
7. /bin/bash:环境变量,默认shell,表示root用户登录系统时所使用的默认shell是bash。(一般有两种/bin/bash默认允许交互,/bin/nologin默认拒绝交互)。
② mail:x:12:postfix
1. mail: 组名,这里指的是mail组。
2. x: 组密码,通常是"x",因为组密码已经存放在gshadow文件中。
3. 12: 组ID,也被称为GID。这里的12是mail组的默认GID。
4. postfix: 附加组,是指一个用户除了其默认的主组(Primary group)外,还可以属于多个其他的组,这些额外的组就是该用户的附加组(Supplementary group)。
③ root$6$tBBimRRE6iiru3tT$JzvGaFXzSAFkf,ASup8Dve,4f2be9tpiVRGnH5ns05g4tbxF8aMTZCFFGOnipJ.Fs4Hit.g.ALZEu119wb/:::99999:7:::
1.代表了用户名
2.代表了用户的密码(加密)
$ 加密等级
$ salt:加盐
$ 密钥、密文
3.上次更改密码的日期:从1970年1月1日算起
4.上次修改密码最短修改时间:
5.密码过期时间(最长修改时间):
6.告警期:用于向用户提醒密码即将过期
7.inactive:宽限时间
8.密码过期日:设置一个用户失效日期,从1970年1月1日算起
9.预留字段
六、Ansible环境准备
(1)安装环境要求
一台控制器,两台node,运行在Centos7.x中,不要minimal安装
(2)部署前的准备
(1)安装三个节点
三个节点采用Centos7.9操作系统,安装过程后续附上链接。
(2)hostnamectl 修改虚拟机名称确保区分
`hostnamectl`命令是用于修改系统主机名的工具,如果需要修改系统主机名,可以使用以下命令:
Step1: 切换到root用户,使用以下命令切换:
su root
Step2: 使用`hostnamectl`命令修改系统主机名,将`newhostname`替换成想要修改的新主机名,执行以下命令:
```
hostname + 新用户名
```
注意:修改主机名后,需要重新启动系统才能生效。
Step3:可以使用以下命令来查看服务器当前的主机名:
```
hostnamectl
```
Step4:如果需要查看或修改`/etc/hostname`文件中的主机名配置,可以使用以下命令:
```
nano /etc/hostname
```
在打开的文件中修改主机名后保存并退出即可。
(3)修改节点的IP地址为静态分配,方便后期进行SSH登录
这里直接使用Centos7中的图形化界面进行修改:
Step1:确认虚拟机需要所属的网段
① 在VMware中的编辑中查看网络编辑器
② 选择虚拟网络编辑器,由于该系统安装使用的是NAT模式,因此应和VM8在同一网段
Step2:通过Centos图形化界面修改IP地址
修改为和VM8相同的网段即可,网关一般为该网段的x.x.x.2主机。
Step3:重启网卡服务使最新的IP生效
使用systemctl restart network.service指令重新启动网卡服务。
(3)SSH免密登录设置
(1)配置controller使用ssh登录node1和node2
Step1:验证controller对node1和node2的连通性
Step2: 尝试ssh操作
以controller控制node1为例,注意,该处进行ssh登录需要使用root模式,且输入的ssh密码应为node1的root密码。
Step3:controller本地生成RSA公钥和私钥,并将公钥发送至node
① 创建公钥和私钥
使用 ssh-keygen指令生成公钥私钥。
② 验证公钥成功生成
在.ssh路径下进行ls查看路径下的文件,如果出现id_rsa和id_rsa.pub,即说明公钥私钥生成成功。
③ 将公钥发送至node
以发送至node2为例,使用ssh-copy-id -i ~/.ssh/id_rsa.pub north-node2@node2进行公钥的发送。
④ 进行免密SSH登录验证
验证成功如下:
(4)sudo免密设置
该部分以node1为例
Step1:切换至root用户
使用su root指令切换至root用户
Step2:修改/etc/sudoers文件
使用vim指令修改/etc/sudoers文件,找到文件下的“Same thing without a password
”添加如下信息:用户名 ALL=(ALL) NOPASSWD: ALL,并使用wq!强制保存并退出,如下图所示。
Step3:验证
① 使用普通用户,不加sudo进行cat /etc/shadow访问,发现被拒绝
② 使用普通用户,加sudo进行cat /etc/shadow访问,发现可以正常操作,且无需输入密码,说明免密sudo成功