文章目录
- ansible系列文章
- 场景
- 环境
- 介绍
- 参数介绍
- 样例
-
- 官方提供
- 个人样例
-
- 说明
- 问题
-
- 一、使用`become`好像不生效,一直报`权限不足`的问题或者需要输入密码
-
- 1. 启动脚本设置
- 2. `hosts`文件里面的主机列表设置
- 二、使用`sudo echo a >> 权限文件`会报`权限不足`的问题
-
- 1. 切换到`root`用户即可解决
- 2. 使用脚本`sudo sh -c 'echo a >> 权限文件'`
- 总结
- 参考链接
- 随缘求赞
ansible系列文章
ansible学习系列之tags的使用
ansible学习系列之顺利启动后台程序
ansible学习系列之make模块的使用
ansible学习系列之become的使用
ansible学习系列之lineinfile模块的使用
场景
近期在编写微服务的
ansible
部署脚本,有些需要使用
root
权限,所以就使用了
ansible
的
become
功能。
环境
软件 | 版本 |
---|---|
Ansible | 2.9.4 |
Python | 2.7.5 |
Centos | 7 |
介绍
Ansible
使用现有的以
root
权限或其他用户的权限的
权限升级系统
来执行任务。由于此功能使您可以“成为(become)”另一个用户,而该用户不同于登录计算机的用户(远程用户(
remote_user
)),因此我们将其称为
become
。
become
关键字利用了现有的特权升级工具,例如
sudo
,
su
,
pfexec
,
doas
,
pbrun
,
dzdo
,
ksu
,
runas
,
machinectl
等
参数介绍
您可以设置控制
become
进入
play
或
task
级别的指令。您可以通过设置连接变量来覆盖这些变量,而连接变量通常在一台主机之间会有所不同。这些变量和指令是独立的。比如,可以单独设置
become_user
,而不设置
become
。
参数 | 默认 | 含义 | 是否必需 |
---|---|---|---|
become | 是否进行提权操作。如果需要,设置为 | 是 | |
become_user | root | 设置为具有所需特权的用户-您想要成为的用户,而不是您登录时使用的用户 | 否 |
become_method | sudo | 权限工具,如 , , , , , , , , | 否 |
become_flags | 或 级别上,允许为任务或角色使用特定的标志。一种常见的用法是,当 设置为 时,将用户更改为 。此指令是在Ansible 2.2中添加。 | 否 |
样例
官方提供
# 要以非root用户身份连接管理系统服务(需要root特权),可以使用默认值begin_user
- name: Ensure the httpd service is running
service:
name: httpd
state: started
become: yes
# 以apache用户身份运行命令
- name: Run a command as the apache user
command: somecommand
become: yes
become_user: apache
# 要在shell程序不登录时以nobody用户身份执行操作
- name: Run a command as nobody
command: somecommand
become: yes
become_method: su
become_user: nobody
become_flags: '-s /bin/sh'
个人样例
- name: 修改配置文件-/etc/ld.so.conf
shell: sh -c 'echo -e "\n{{lboso_install_path}}" >> /etc/ld.so.conf'
become: yes
tags:
- micro_install_clean
说明
功能点 | 用途 |
---|---|
become | 使用 或者 的权限 |
tags | 标签,适合通过标签实现一个 下面的功能选择 |
问题
一、使用 become
好像不生效,一直报 权限不足
的问题或者需要输入密码
become
权限不足
是因为没有设置对应的密码,在这里有两种方式可以设置
1. 启动脚本设置
启动脚本加入参数
-K
,这个是强制要求输入密码,在脚本启动的时候,就会要求填写
2. hosts
文件里面的主机列表设置
hosts
需要执行
become
的地方,设置
ansible_become_password
参数,如下图:
[test_server]
10.13.4.[48:51] ansible_ssh_user="test" ansible_ssh_pass='111111' ansible_sudo_pass='111111' ansible_become_password='111111'
二、使用 sudo echo a >> 权限文件
会报 权限不足
的问题
sudo echo a >> 权限文件
权限不足
这个是权限问题,可以有两种方式解决:
1. 切换到 root
用户即可解决
root
2. 使用脚本 sudo sh -c 'echo a >> 权限文件'
sudo sh -c 'echo a >> 权限文件'
总结
ansible
是一门强大的工具,集成了很多不错的功能模块。学习这些东西,可以减少我们重复的工作,提高工作效率。实际工作中,是会遇到需要提权的时候,而
become
可以帮忙解决这些问题。
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnL0cjN4ATOxMTM2EDNwAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
参考链接
user_guide/become
plugins/become/sudo
become.html#become-plugins
随缘求赞
如果我的文章对大家产生了帮忙,可以在文章底部点个赞或者收藏;
如果有好的讨论,可以留言;
如果想继续查看我以后的文章,可以左上角点击关注