当前位置:首页 > 技术 > 正文内容

ansible学习系列之become的使用

Lotus2022-12-08 13:28技术

一、场景

近期在编写微服务的​​ansible​​​部署脚本,有些需要使用​​root​​​权限,所以就使用了​​ansible​​​的​​become功能。本篇博客主要讲述关于 ​​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


是否进行提权操作。如果需要,设置为​​yes​


become_user

root

设置为具有所需特权的用户-您想要成为的用户,而不是您登录时使用的用户


become_method

sudo

权限工具,如​​sudo​​​,​​su​​​,​​pfexec​​​,​​doas​​​,​​pbrun​​​,​​dzdo​​​,​​ksu​​​,​​runas​​​,​​machinectl​


become_flags


​play​​​或​​task​​​级别上,允许为任务或角色使用特定的标志。一种常见的用法是,当​​shell​​​设置为​​no login​​​时,将用户更改为​​nobody​​。此指令是在Ansible 2.2中添加。


五、样例

  1. 官方提供
# 要以非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'
  1. 个人样例
- 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

使用​​root​​​或者​​sudoer​​的权限

tags

标签,适合通过标签实现一个​​role​​下面的功能选择

六、问题

6.1、使用​​become​​​好像不生效,一直报​​权限不足​​的问题或者需要输入密码

是因为没有设置对应的密码,在这里有两种方式可以设置

1. 启动脚本设置

启动脚本加入参数​​-K​​,这个是强制要求输入密码,在脚本启动的时候,就会要求填写

2. ​​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'

6.2、使用​​sudo echo a >> 权限文件​​​会报​​权限不足​​的问题

这个是权限问题,可以有两种方式解决:

1. 切换到​​root​​用户即可解决

2. 使用脚本​​sudo sh -c 'echo a >> 权限文件'​

七、总结

​ansible​​​是一门强大的工具,集成了很多不错的功能模块。学习这些东西,可以减少我们重复的工作,提高工作效率。实际工作中,是会遇到需要提权的时候,而​​become​​可以帮忙解决这些问题。

ansible学习系列之become的使用_启动脚本

八、参考链接

​user_guide/become​

​​ ​​​plugins/become/sudo​​​ ​​​​

​become.html#become-plugins​

随缘求赞

如果我的文章对大家产生了帮忙,可以在文章底部点个赞或者收藏;如果有好的讨论,可以留言;

如果想继续查看我以后的文章,可以点击关注 可以扫描以下二维码,关注我的公众号:枫夜之求索阁,查看我最新的分享!

ansible学习系列之become的使用_启动脚本_02

ansible学习系列之become的使用_启动脚本_03

原文链接

扫描二维码推送至手机访问。

版权声明:本文来源于网络,仅供学习,如侵权请联系站长删除。

本文链接:https://news.layui.org.cn/post/1101.html

分享给朋友:

“ansible学习系列之become的使用” 的相关文章

【Spring boot】启动过程源码分析

启动过程结论 推测web应用类型。 spi的方式获取BootstrapRegistryInitializer、ApplicationContextInitializer、ApplicationContextInitializer对象。 通过调用栈推测出main()方法所在的类。 调用启动方法:run(String... args)。后面的步骤在这个方法内部! 触发SpringApplicatio...

将 N 叉树编码为二叉树

将 N 叉树编码为二叉树 作者:Grey 原文地址: 博客园:将 N 叉树编码为二叉树 CSDN:将 N 叉树编码为二叉树 题目描述 将一棵n叉树编码为一棵二叉树,并对二叉树进行解码,得到原始的n叉树。 n叉树是一棵有根树,其中每个节点的子树不超过n个。 类似地,二叉树是一棵有根树,其中每个节点的子树不超过2个。 编码/解码算法的工作方式不受限制。 您只需要确保一个n叉树可以被编码为一个二叉树,并...

一次服务器被入侵的处理过程分享

下文中的,给文件和目录加锁,是指给文件和目录增加了一些属性,只读等。 chattr +ia 目录 一、服务器入侵现象 二、服务器排查和处理 2.1、服务器被入侵的可能原因 2.2、排查和处理步骤 三、本次入侵需要带来启示的点 四、本次服务器被入侵的一些启示 一、服务器入侵现象 近期有一个朋友的服务器(自己做了网站)好像遭遇了入侵,具体现象是: 服务器 CPU 资源长期 1...

【大话云原生】微服务篇-五星级酒店的服务方式

文章开始之前,我给大家推荐一个人工智能学习网站,首先说我之前是完全不涉及人工智能领域的,但是我尽然看懂了,以后老哥我就要参与人工智能了。如果你也想学习,点击跳转到网站 《大话云原生》系列文章期望用最通俗、简单的语言说明云原生生态系统内的组成及应用关系。此专栏的前两篇文章 《【大话云原生】煮饺子与docker、kubernetes之间的关系》 《【大话云原生】负载均衡篇-小饭馆的流量变大了》 欢迎...

CentOS 7.9 安装 MySQL 5.7.35

CentOS 7.9 安装 MySQL 5.7.35 1 下载地址:https://downloads.mysql.com/archives/community/ 2 mysql5.7.35 安装包上传到linux服务器 使用Xftp 或者wget在服务器上下载 # 推荐使用wget yun install -y wget wget https://downloads.mysql.com/ar...

虚拟线程 - VirtualThread源码透视

前提 JDK19于2022-09-20发布GA版本,该版本提供了虚拟线程的预览功能。下载JDK19之后翻看了一下有关虚拟线程的一些源码,跟早些时候的Loom项目构建版本基本并没有很大出入,也跟第三方JDK如鹅厂的Kona虚拟线程实现方式基本一致,这里分析一下虚拟线程设计与源码实现。 Platform Thread与Virtual Thread 因为引入了虚拟线程,原来JDK存在java.lang....

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。