首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么我的sudo命令适用于ansible,而不适用于ansible-playbook?

sudo命令是Linux系统中的一个权限管理工具,用于以超级用户的身份执行命令。在ansible中,使用sudo命令可以在目标主机上以root权限执行任务。

然而,sudo命令适用于ansible命令行工具,却不适用于ansible-playbook命令行工具的原因是ansible和ansible-playbook在执行任务时使用的是不同的方式。

ansible是一种基于SSH协议的自动化工具,它通过SSH连接到目标主机,并在目标主机上执行命令。因此,当使用ansible命令行工具时,可以通过在命令前加上sudo来以root权限执行任务,例如:

代码语言:txt
复制
ansible all -m command -a "sudo systemctl restart nginx"

然而,ansible-playbook是ansible的剧本执行工具,它通过在目标主机上生成临时的Python脚本来执行任务。由于ansible-playbook生成的脚本需要在目标主机上执行,而不是通过SSH连接执行,因此无法直接使用sudo命令来提升权限。

为了在ansible-playbook中以root权限执行任务,可以在playbook的任务中使用become关键字来指定使用sudo或者su来提升权限。例如:

代码语言:txt
复制
- name: Restart Nginx
  become: yes
  become_method: sudo
  command: systemctl restart nginx

在上述示例中,使用become关键字指定了使用sudo来提升权限,并执行了重启Nginx的命令。

总结起来,sudo命令适用于ansible命令行工具,因为ansible通过SSH连接执行命令;而在ansible-playbook中,需要使用become关键字来指定以root权限执行任务。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

ansible 学习笔记

大家好,又见面了,我是全栈君。...ansible命令参数 -a 'Arguments', --args='Arguments' 命令行参数 -m NAME, --module-name=NAME 执行模块的名字,默认使用 command...-u Username, --user=Username 执行用户,使用这个远程用户名而不是当前用户 -U --sud-user=SUDO_User sudo到哪个用户,默认为 root -k...--ask-pass 登录密码,提示输入SSH密码而不是假设基于密钥的验证 -K --ask-sudo-pass 提示密码使用sudo -s --sudo sudo运行 -S --su...该指令使用需要谈到ansible的另一种模式---pull 模式,这和我们平常经常用的push模式刚好相反,其适用于以下场景:你有数量巨大的机器需要配置,即使使用非常高的线程还是要花费很多时间;你要在一个没有网络连接的机器上运行

50410

使用 Ansible 工具批量操作虚拟机集群,自动化安装 Docker

我在公司主要负责的任务就是关于服务的自动化部署和运维,公司本身就属于云服务,而且非常多,所以部署的方式也有很多种版本,我接触到的自动化平台主要包括一下几种: 以 ansible 脚本为主导而搭建的自动化部署升级平台...安装 ansible 也可以直接使用系统的包管理工具来安装,比如 CentOS 的 yum 命令: sudo yum install ansible Ubuntu 系统的 apt-get 命令: sudo...update sudo apt-get install ansible ansible基本用法 使用 ansible-playbook ansible-playbook 也称之为剧本,是 ansible...ansible-playbook 命令可以作为运行一个 ansible 任务的开始,具体如何使用,可以查看帮助,下面这条是一般启动命令: ansible-playbook docker.yml -i hosts...-u alex -k -K 这个命令可以指定一个操作的用户,后续需要输入用户的密码和sudo命令。

85420
  • Ansible进阶学习之Playbooks(剧本)的理解使用

    我们都知道,Ansible实现管理主要有两种方式: Ad-HOC 利用ansible命令直接完成管理,主要用于临时命令使用场景 playbook ansible脚本,主要用于大型项目场景,需要前期的规划...也可以通过指定其通过sudo的方式在远程主机上执行任务,其可用于play全局或某任务;此外,甚至可以在sudo时使用sudo_user指定sudo时切换的用户。...查看ansible-playbook的使用方法 man ansible-playbook ?...非常详细,感兴趣的伙伴可以去了解一下 运行playbook ansible-playbook nginx.yml 当然,还有更详细的用法,大家可以参考下面的内容 用法: ansible-playbook...小结 本篇关于ansible进阶之playbook的使用到这里就结束了,受益的朋友记得点赞三连支持一波!你知道的越多,你不知道的也越多,我是Alice,我们下一期见!

    1.2K30

    Ansible自动化运维学习笔记1

    用于配置对应主机上的sshd服务端口号默认的22号端口, # ansible_user 用于配置连接到对应主机时所使用的用户名称。...Ubuntu存储库安装(版本可能非最新) sudo apt update # 首先使用以下命令刷新系统的软件包索引完成此更新后您可以使用以下方法 sudo apt install ansible #...命令参数 语法参数: ansible [主机] [选项] [主机连与认证] #[option] -a #用于传递模块所需要使用的参数 -a "src=/etc/fstab dest=/testdir/...ansible/"表示为fetch模块传入了两个参数 -m #选项用于调用指定的模块,-m fetch"表示调用fetch模块; -e #指定参数变量以供模块使用 补充命令1: ansible-doc...这样似乎有些麻烦,肯定有更好的办法,没错我们可以将上述命令写成脚本,每次修改一些变量然后执行脚本就行了,而ansible天生就提供了这种类似"脚本"的功能,在ansible中类似”脚本”的文件被称作”剧本

    1.9K20

    『Ansible 上手指南』

    目前我从事的工作就是 PaaS 部署相关的,部署层面的脚本的运行、组件的安装、服务的启动等都是使用 Ansible 来操作。具体的脚本编写由其他同事,我只知道这个东西是干嘛的。没实质性的学习。...于是想借这个机会主动学习下 Ansible. 学习之处,差点犯了老问题,即:从头开始看官方文档,而不注重当前需要解决的问题。 因为其实整个 Ansible 的内容体系很多。...) ansible_sudo_exe (new in version 1.8) sudo 命令路径(适用于1.8及以上版本) ansible_connection 与主机的连接类型.比如:local..., ssh 或者 paramiko. ansible_ssh_private_key_file ssh 使用的私钥文件.适用于有多个密钥,而你不想使用 SSH 代理的情况. ansible_shell_type...执行:ansible-playbook example.yml 按照 example.yml 文件里的任务集合按步执行任务。 示例 命令示例,仅举几例,有带参数、有没带参数的。

    80130

    ansible之Playbook

    playbook是ansible用于配置,部署和管理托管主机剧本,通过playbook的详细描述,执行其中一系列tasks,可以让远程主机达到预期状态,也可以说,playbook字面意思是剧本,现实中由演员按剧本表演...而playbook就是组织多个task的容器,他的实质就是一个文件,是用yaml(Yet Another Markup Language)语言编写的文件,有着特定的组织格式。...ansible-playbook 常用命令 ansible-playbook playbook.yml [options] # ssh 连接的用户名 -u REMOTE_USER, --user=REMOTE_USER...# ssh登录认证密码 -k, --ask-pass # sudo 到root用户,相当于Linux系统下的sudo命令 -s, --sudo # sudo 到对应的用户...-v, --verbose ansible 执行ping命令 与 ansible-playbook 执行ping命令 ansible 执行ping命令 [vagrant@controller

    1K20

    自动化运维利器 ansible-入门

    1.8) sudo 命令路径(适用于1.8及以上版本) ansible_connection 与主机的连接类型.比如:local, ssh 或者 paramiko....ansible_ssh_private_key_file ssh 使用的私钥文件.适用于有多个密钥,而你不想使用 SSH 代理的情况....ansible_python_interpreter 目标主机的 python 路径.适用于的情况: 系统中有多个 Python, 或者命令路径不是"/usr/bin/python",比如...,这里我指明了每台机器连接的 ssh 登陆用户名,在执行 ansible 命令时就不需要再指定用户名,如果不指定用户名,andible 则尝试使用本机已登陆的用户去登陆远程主机。...首先查看 ansible-playbook 的帮助命令 (py37env) aaron@ubuntu:~$ ansible-playbook -h Usage: ansible-playbook [options

    1.7K30

    Ansible批量更新远程主机用户密码 (包括Ansible批量做ssh互信)

    ============================= 需要注意ssh建立互信的命令格式: # ssh-copy-id -i ~/.ssh/id_rsa.pub username@[ip,hostname...] ==================================================== 在客户机比较多的情况下,使用 ssh-copy-id命令的方法显然是有些费时,使用ansible-playbook..., 使用-e参数传递用户名和密码给剧本,其中root为用户名,admin#123就是修改后的root密码 [root@ansible-server ~]# ansible-playbook /opt/...脚本, 适用于修改清单中部分远程主机的用户密码 编写ansible-playbook脚本 (需要注意下面脚本中"ens192"是客户机ip所在的网卡设备名称, 这个要根据自己实际环境去配置, 比如eth0...如果使用普通用户, 并且允许sudo, 则需要提前在客户机里的/etc/sudoers文件里配置好该普通用户的sudo配置, 即允许该普通用户有sudo权限.

    6.2K20

    如何在Ubuntu 14.04上使用Ansible部署基本PHP应用程序

    一个将用于Ansible的Ubuntu 14.04 腾讯CVM。这也是您将在本教程的整个过程中登录的腾讯CVM。...为两个腾讯CVM配置的Sudo非root用户,没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后在购买服务器。...默认情况下,Ansible使用位于/etc/ansible/hosts其中的hosts文件,该文件包含它正在管理的所有服务器。虽然该文件适用于某些用例,但它是全局的,这也不是我们想要的。...最后,运行ansible-playbook以在腾讯CVM上安装软件包。如果您的PHP 腾讯CVM上的sudo用户需要密码,请不要忘记使用该--ask-sudo-pass选项。...为此,我们可以告诉Ansible将命令作为使用 sudo的特定用户运行。

    5.9K00

    运维自动化工具ansible

    Ansible Playbook -> Ansibile 利用ansible实现管理的方式: Ad-Hoc 即ansible命令,主要用于临时命令使用场景 Ansible-playbook 主要用于长期规划好的...,大型项目的场景,需要有前提的规划 Ansible-playbook(剧本)执行过程: 将已有编排好的任务集写入Ansible-Playbook 通过ansible-playbook命令分拆任务集至逐条...= $HOME/.ansible/tmp # 本机的临时命令执行目录 #forks = 5 # 默认并发数 #sudo_user = root # 默认sudo...ansible-pull 推送命令至远程,效率无限提升,对运维要求较高 Ansible-playbook ansible-playbook hello.yml 例子: vim hello.yml -...也可以通过指定其通过sudo的方式在远程主机上执行任务,其可用于play全局或某任务;此外,甚至可以在sudo时使用sudo_user指定sudo时切换的用户 - hosts: websrvs remote_user

    3.4K10

    Ansible安装和基本使用

    以上命令,最常用的两个:ansible和ansible-playbook,这两个命令就是ansible用来实现批量管里的关键。...ansible命令通常用于一次性或者临时的任务,一般一条命令即可实现任务。...通常我们称这种方式为:ad-hoc; ansible-playbook主要是应用于针对大型项目的部署,需要通过多个yaml格式的文件(以yaml或者yml结尾)组合使用,所以一般需要进行提前规划目录,整合...接下来介绍几个比较常用的命令。 3.2.1 ansible-doc 该命令主要用于显示针对某个模块的使用方法的帮助信息。如果忘记了模块或者模块的用法,可以通过该命令快速查看。...:指定sudo的runas用户,默认为root -K,--ask-become-pass :提示输入sudo时的口令 通配符 ansible "*"-m ping ansible 192.168.1

    92210

    一文读懂 Ansible 不同上下文提权

    ,了解 Ansible 变量的使用 理解不足小伙伴帮忙指正 近几天有风也有云,就是热了些,你那里呢 ^_^ 我所渴求的,無非是將心中脫穎語出的本性付諸生活,為何竟如此艱難呢 ------赫尔曼·黑塞《...所以任何命令通过root来执行是一件很危险的事。 所以从安全角度考虑,要遵循最小权限原则,即要求系统只授予主体必要的权限,而不要过度授权,这样能有效地减少系统、网络、应用、数据库出错的机会。...所以Linux系统中,一种良好的操作习惯是使用普通账户登录,在执行需要root权限的操作时,再通过sudo命令完成。...理想情况下,以尽可能简单的方式配置提权,并且应该清楚是否将其用于任务。 提权策略 Ansible Playbook 可以在许多不同的级别上实现提权。...来执行命令 ┌──[root@vms81.liruilongs.github.io]-[~/ansible] └─$ansible-playbook become.yaml PLAY [Become

    1.3K40

    【ansible 自动化部署方案】

    sudo 密码(这种方式并不安全,我们强烈建议使用 --ask-sudo-pass) ansible_sudo_exe (new in version 1.8) sudo 命令路径(适用于1.8...ssh 使用的私钥文件.适用于有多个密钥,而你不想使用 SSH 代理的情况. ansible_shell_type 目标系统的shell类型.默认情况下,命令的执行使用 'sh' 语法,可设置为...'csh' 或 'fish'. ansible_python_interpreter 目标主机的 python 路径.适用于的情况: 系统中有多个 Python, 或者命令路径不是"/usr/bin...在执行一个 playbook 之前,想看看这个 playbook 的执行会影响到哪些 hosts,你可以这样做: ansible-playbook playbook.yml --list-hosts...mv info info.bak sudo mkdir info sudo apt-get install -y ia32-libs 开始我是想在一条命令中同时安装几个软件包, 结果还是出现E: Sub-process

    96530

    如何使用Ansible自动在Ubuntu 14.04上安装WordPress

    完成此操作后,您应该能够在wordpress-server上执行以下命令而无需提供密码: sudo echo "Hello" 现在,在本教程中,您可以运行ansible-playbook不带-K标志的命令...SSH到您的构建服务器并运行此命令以安装Ansible: sudo apt-get install ansible -y 您可以通过运行来确保安装Ansible: ansible --version...第3步 - 编写Playbook 在本节中,我们将编写用于在远程服务器上安装WordPress的命令。 库存(主机文件) Ansible清单通知Ansible我们要安装WordPress的服务器。...: ansible-playbook playbook.yml -i hosts -u sammy -K 你应该看到这样的输出: Output ansible-playbook playbook.yml...您现在可以使用单个命令在任何Ubuntu 14.04服务器上安装WordPress站点: ansible-playbook playbook.yml -i hosts -u sammy -K 您所要做的就是将目标服务器的

    1.5K40
    领券