综合案列,处理敏感文件,Sudo

综合安例
control 控制端服务器 (所有操作在control主机操作)

node3,node4安装启动httpd 服务
node2    proxy代理(Nginx)
roles/proxy/files        编写脚本源码安装Nginx
将真机(lnmp_soft/nginx-1.17.6)源码包拷贝到   roles/proxy/files目录下
在此目录下编写脚本源码安装Nginx
编写配置文件 定义集群  调用集群
roles/proxy/tasks编写任务 
copy模块拷贝到对方/tmp目录下
   script模块不支持幂等性,
加args:                   (和scripts对齐)
       creates: 后跟一个文件(/usr/local/nginx/sbin/nginx)

  ansible-doc  script  查看模块
 copy拷贝配置文件
 启服务
shell:   (因为shell不支持幂等性 操作同上)
args:
   creates: /usr/local/nginx/logs/nginx.pid 判断此文件是否存在 有则不再启动
 防火墙打开

  确定之前是否在node2开启过http服务,如果开启将http关闭 
  编写剧本  执行角色proxy

service模块开启http自带幂等性

2、ansible-vault处理敏感数据
encrypt(加密)、decrypt(解密)、view(查看),rekey(重置密码)

[root@control ansible]# echo 12345678 > data.txt
[root@control ansible]# ansible-vault encrypt data.txt
New Vault password:
Confirm New Vault password:
Encryption successful
[root@control ansible]# cat data.txt
$ANSIBLE_VAULT;1.1;AES256.............
[root@control ansible]# ansible-vault view data.txt
Vault password:
12345678
[root@control ansible]# ansible-vault rekey data.txt
Vault password:
New Vault password:
Confirm New Vault password:
Rekey successful
[root@control ansible]# ansible-vault decrypt data.txt
Vault password:
Decryption successful
[root@control ansible]# cat data.txt
12345678
[root@control ansible]# echo "lm secret data" > data.txt  写入数据
[root@control ansible]# echo 123456 > pass.txt 将密码写入文件
[root@control ansible]# ansible-vault encrypt --vault-id=pass.txt data.txt
Encryption successful      用密码加密文件
[root@control ansible]# cat data.txt
$ANSIBLE_VAULT;1.1;AES256.........................
[root@control ansible]# ansible-vault decrypt --vault-id=pass.txt data.txt
Decryption successful   解密文件
[root@control ansible]# cat data.txt
lm secret data

3、Sudo权限(让普通用户提升权限)
管理员需要先授权(修改/etc/sudoers文件)
普通用户以sudo的形式执行命令

修改/etc/sudoers的方法如下:
visudo(带语法检查,默认没有颜色提示)
vim /etc/sudoers(不带语法检查,默认有颜色提示)
授权格式
   用户或组 主机列表=(提权身份)[NOPASSWD]:命令列表
   命令需要写绝对路径 提权输自己密码NOPASSWD不需要密码 多个命令用逗号分隔

/etc/sudoers   此文件为只读wq!强制保存 立即生效
sudo  命令 (提权)

Ubuntu默认禁用root 第一个用户自动sudo ALL
[root@control ansible]# ansible all -m user -a "name=all password={{'123456' | password_hash('sha512')}}"
 [root@control ansible]# ansible all -m lineinfile -a "path=/etc/sudoers line='all ALL=(ALL) NOPASSWD:ALL'"
 [root@control ansible]# ssh all@node1      验证
all@node1's password:
[all@node1 ~]$ sudo systemctl restart sshd
[all@node1 ~]$ exit

修改Ansible配置

[root@control ansible]# vim ~/ansible/ansible.cfg

[defaults]

inventory = ~/ansible/inventory

remote_user = alice                #以什么用户远程被管理主机(被管理端主机的用户名)

[privilege_escalation]

become = true                    #alice没有特权,是否需要切换用户提升权限

become_method = sudo                #如何切换用户(比如用su就可以切换用户,这里是sudo)

become_user = root                #切换成什么用户(把alice提权为root账户)

become_ask_pass = no                #执行sudo命令提权时是否需要输入密码

远程被管理端主机的all用户,需要提前配置SSH密钥。

[root@control ansible]# for i in node1 node2 node3 node4 node5

do

ssh-copy-id all@$i

done

验证效果:

[root@control ansible]# ssh alice@node1 #依次远程所有主机看看是否需要密码

#注意:是远程登录node1,应该输入的是node1电脑上面alice账户的密码,control没有all用户

[root@node1 ~]# exit #退出远程连接

[root@control ansible]# ansible all -m command -a "who" #测试效果

[root@control ansible]# ansible all -m command -a "touch /test" #测试效果

常见报错(有问题可以参考,没问题可以忽略):

node1 | UNREACHABLE! => {

"changed": false,

"msg": "Failed to connect to the host via ssh: alice@node1: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).",

"unreachable": true

}

问题分析:

Failed to connect to host via ssh alice@node1(通过ssh使用alice远程连接到主机失败)

Permission denied(因为无法连接,所以报错说权限被拒绝)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值