第九周实训 ansible
切这个,然后右边的目录结构会清晰一点,暂时没写序号。
周一: https://blog.dayi.ink/?p=166
周一
Centos安装
1. 镜像下载
Centos7 今年6月就停止维护(会撤源,然后几乎就不能用了)
可以下百度网盘,也可以用这个地址(选7 (x86_64, DVD)
)
https://mirrors.cernet.edu.cn/os/centos
2. 安装
推荐英文
- 可能需要的小点
-
ISO镜像:
-
安装,选第一个INSTALL CENTOS7
- root用户名密码
- 进系统
3. 克隆
可有可无,有被控机子就行。
配置EPEL源、安装Ansible
粘贴:CTRL+SHIFT+V
master(非克隆机子)上,开机,左上角,开终端
su
ping 223.5.5.5 #测试网络
yum install epel-release -y # EPEL源
yum install ansible -y
设置从节点主机名
不知道有没有必要性,可以先弄一下(
搭嘎这样:
su
hostnamectl set-hostname node1
[dayi@localhost ~]$ bash
[dayi@node1 ~]$
Centos关闭自动锁屏
配置免密登录
在主机生成RSA密钥对
su
ssh-keygen -t rsa
查看IP地址
先查看IP地址:
ip addr
下面俩小节选一个就可以
【centos系】[被控机是centos 红帽子 系,一般是默认允许root直接ssh登录]
在master上:
su
ssh-copy-id root@[IP地址]
be-like:
[root@localhost ~]# ssh-copy-id [email protected]
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '192.168.59.156 (192.168.59.156)' can't be established.
ECDSA key fingerprint is SHA256:QWGWPbUMNku1ClDrzhN2GOt3T7GfghnMIjj9b4J8qaA.
ECDSA key fingerprint is MD5:5d:bb:9b:49:c5:d9:37:c7:dd:60:dd:14:92:e9:f3:47.
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
[email protected]'s password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh '[email protected]'"
and check to make sure that only the key(s) you wanted were added.
[root@localhost ~]#
【debian系】 [被控机是Debian 系,一般不允许root直接登录]
注意这个跟上面做一个就可以。【debian系和centos系】
跟作业一样啦:
- 先被控机允许ROOT登录
- 然后
ssh-copy-id
复制秘钥到主机。
【debian系】先设置允许root通过ssh登陆
在被控机:
如果你发现root用户无法通过ssh登陆到主机(会提示密码错误什么的):(主控机和被控机)
su
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
systemctl restart sshd
这样就好啦。
主控机和被控机都做一下
如果你发现可以直接root登陆就不用做这一步了。
【debian系】设置免密登陆
debian系包括Debian kali ubuntu等
在master上
su #直接用root了,方便,可以用其他用户
ssh-keygen -t rsa # 生成RSA密钥 一直回车就可以
复制controler(master 机器)的公钥,到其他的几个被控机器上。(会提示输入密码和yes)(在master上输入)
su
ssh-copy-id [email protected] [你的IP地址]
ssh-copy-id [email protected]
ssh-copy-id [email protected]
测试免密登陆
ssh [email protected]
这样不输入密码就登陆上就可以啦(退出的话输入exit)
测试免密登录
su
ssh root@【被控机IP地址】
ssh [email protected]
ssh [email protected]
ssh [email protected]
大概就这样,想控几个配几个
Ansible配置
这个是ROOT用户的:原话:上午做的ROOT用户,下午要改。普通用户的。
如果你在图形化界面
su
mkdir -pv /etc/ansible/
nano /etc/ansible/hosts
文件内容类似这样:
node1 ansible_host=192.168.59.156
node2 ansible_host=192.168.59.157
node3 ansible_host=192.168.59.153
[dayi]
node1
node2
node3
[ovo]
localhost ansible_connection=local
CTRL+W 写入文件 ctrl+s 保存文件(可能不同版本没有这个) ctrl+x 退出
测试下:
ansible -m ping all
belike:
非ROOT用户使用ansible(救命)
配置sudo权限 【controller机子、和其他所有的机子】
这个命令要在所有机子上执行(controller(主机)和slaves(被控几)上)
su
#这一行尽量复制注意空格,(记得用户名改成你自己的)
echo "dayi ALL=(ALL) NOPASSWD: ALL">>/etc/sudoers
su dayi #切换到你的用户
sudo su #试试有没有权限
这样就可以了
记得被控机也弄一下
然后重新配置ansible (救命)
【controller机子的】
救命高建鑫没装ansible
sudo yum install epel-release -y # EPEL源
sudo yum install ansible -y
下一步
su dayi #你的用户名
cd ~
mkdir ansible
cd ansible
cp -a /etc/ansible/ansible.cfg .
需改配置1
su dayi #这里输入的root密码,意思是切换到你的用户,如果在了就不用了。
vim ~/ansible/ansible.cfg
VIM使用:(高建鑫打不上字看这个)
键盘 | 作用 |
---|---|
i | 输入模式 |
ECS -> 输入:wq |
保存+退出 |
这里两种改法:/home/dayi/ansible/inventory
或者~/ansible/inventory
, dayi
是你的用户名
这里,改成False
需要改配置2
还是同样一个文件
在vim下搜索,先ESC退出插入模式,输入
/privilege_escalation
然后回车,然后再按I键
把#去掉:
这样子。
输入ESC 然后输入 :wq
保存文件
复制controller的普通用户的
公钥到slave普通用户
的免密登录(again)
su dayi
ssh-keygen -t rsa #一路回车
ssh-copy-id [email protected]
ssh-copy-id [email protected]
ssh-copy-id [email protected]
测试免密登录
ssh [email protected]
ssh [email protected]
ssh [email protected]
这样就可以了
修改那个vim inventory
su dayi
nano ~/ansible/inventory
node1 ansible_host=192.168.59.156
node2 ansible_host=192.168.59.157
node3 ansible_host=192.168.59.153
[dayi]
node1
node2
node3
[ovo]
localhost ansible_connection=local
测试
cd ~/ansible
ansible all -m ping
这样就可以了。
常见错误
对于debian系统没有sudo
su
apt install sudo -y
echo "dayi ALL=(ALL) NOPASSWD: ALL">>/etc/sudoers
su dayi
echo "export PATH=\$PATH:/sbin" >> ~/.bashrc
source ~/.bashrc
sudo su #测试
- 提示什么./.tmp/ XXXX没有权限 关键词“Permission denied”,这说明你在root用户下操作了一些在普通用户的文件:
#暴力解决
sudo su
rm -rf /home/dayi/.ansible
# 再试一试,如果可以了后面不用了 #切到 dayi用户下
chmod +777 -R /home/dayi/.ansible
# 再试一试,如果可以了后面不用了 #切到 dayi用户下
#暴力
chmod +777 -R /home/* #全部给全部权限,所有文件
su dayi
chmod +600 ~/.ssh/id_rsa #给太多了,修一个
修改IP地址
不知道为什么好像要固定IP,但是我好像没听清这个是不是必须的要求。
我只能说,改IP是个大活(
说是要改成这样:
先把分配IP的地方改过来:
机子执行命令
(没啥好命令,都很复杂,不同发行版系统差距大)
图形化界面(UI)修改 centos7
关了再开:
查看生效(不生效重新设一次,重启试试)
SHELL修改 centos7
sudo su
nmtui #如果没有输入 yum install NetworkManager-tu
sudo systemctl restart network # 重启网络服务
SHELL修改 debian
debian不推荐用nmtui,因为默认的网络管理器不同,但是对于有线也可以用
nmtui 方法:
sudo apt-get install network-manager -y
sudo nmtui #但是要手动添加网络
推荐:
sudo nano /etc/network/interfaces
修改这里:
注意你不一定是ens33
iface ens33 inet static
address 192.168.132.13/24
network 192.168.132.0
gateway 192.168.132.2
dns-nameservers 223.5.5.5 192.168.132.2
重启网络服务
sudo systemctl restart networking
记得改完IP测下是否还可以上网
ping qq.com
无损修改IP(DHCP分配)
感觉好像反而复杂了,干脆用【修改IP地址】章节手动改吧。
好像要一起固定IP?我好像没听清这个是不是必须的要求。
我现在的大概这个样子:
192.168.59.155 master
192.168.59.156 node1
192.168.59.157 node2
192.168.59.153 py-ovo3
要改成:
其实也挺好,那样后面的IP就统一啦。
无损(指不动现有的虚拟机、从DHCP来整)这样做:
1. 虚拟网络管理器
2. 更改设置
3. 找那个NAT模式的
4. 改IP段,保存
5. 查MAC地址(四个机子的 记录下来)
6. WIN+X 选择管理员(终端 或者 powershell)
7. 写配置文件
8. 保存文件
9. 重启DHCP
10. 重启虚拟机
1-4步:
5步:
记录着三个地方的MAC地址:
ip addr
记录一下四个机子的IP地址
6步
在你的windows(宿主机)上,WIN+X打开cmd或者powershell或者记事本
输入
notepad C:\ProgramData\VMware\vmnetdhcp.conf
7步
很遗憾的是,【编辑】->【虚拟网络编辑器】后,会重置vmnetdhcp.conf文件 ,所以你改的这个内容,最好要备份一下)
输入
host ovo_controller {
hardware ethernet 00:0c:29:3f:22:a2; #这里改为controller的地址
fixed-address 192.168.132.10;
}
host ovo_node1 {
hardware ethernet 00:0c:29:c9:96:7b; #这里改为node1的MAC地址
fixed-address 192.168.132.11;
}
host ovo_node2 {
hardware ethernet 00:0c:29:24:fb:d8; #这里改为node2的MAC地址
fixed-address 192.168.132.12;
}
host ovo_node3 {
hardware ethernet 00:0c:29:67:10:46; #这里改为node3的MAC地址
fixed-address 192.168.132.13;
}
8步,塞后面。保存
保存不了可以另存为桌面,然后在手动复制到:
C:\ProgramData\VMware\
9-10步
管理员终端
net stop VMnetDHCP
net start VMnetDHCP
然后把虚拟机重启了
也可以不重启,输入这个
systemctl restart network
改完IP 再改下配置文件
是这样的,再在controller做:
su
su dayi
nano ~/ansible/inventory
改下IP
node1 ansible_host=192.168.132.11
node2 ansible_host=192.168.132.12
node3 ansible_host=192.168.132.13
重新认下IP
# yes之后直接exit就行
ssh [email protected]
ssh [email protected]
ssh [email protected]
再测试一遍:
cd ~/ansible
ansible all -m ping
以上为周一。
发表回复