首页
学习
活动
专区
工具
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模式刚好相反,其适用于以下场景:你有数量巨大机器需要配置,即使使用非常高线程还是要花费很多时间;你要在一个没有网络连接机器上运行

47210

使用 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命令

70720

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 文件里任务集合按步执行任务。 示例 命令示例,仅举几例,有带参数、有没带参数

77330

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.8K20

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.1K30

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

97920

自动化运维利器 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.6K30

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权限.

5.4K20

Ansible自动化运维工具常规记录

操作步骤: # 1.客户端-生成ssh公密钥 # 【注:切换到建立ssh连接用户weiyigeek运行: su weiyigeek,因为该认证文件只适用于本用户weiyigeek与其他用户ssh连接认证...test.yml文件 ansible-playbook test.yml --user=weiyigeek --private-key=/home/weiyigeek/.ssh/id_rsa -s #...# --private-key表示ssh使用认证文件。 # -s 表示在连接到被控制机器节点后使用weiyigeek sudo权限运行test.yml中命令。...温馨提示: ansible 输入 weiyigeek 用户sudo密码有两种配置方式,一种是在命令行中添加--ask-sudo-pass, 另外一种则是在ansible配置文件/etc/ansible...ansible_sudo_pass='123456' 温馨提示: 可能会遇到问题,在拷贝玩ssh文件到被控制主机后,第一次运行会出现检查keys对话,导致ssh连接失败,如下所示, 所以为了解决该问题我们可以在

43410

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

一个将用于AnsibleUbuntu 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.3K10

Ansible安装和基本使用

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

73910

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

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

1.1K40

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

完成此操作后,您应该能够在wordpress-server上执行以下命令而无需提供密码: sudo echo "Hello" 现在,在本教程中,您可以运行ansible-playbook不带-K标志命令...SSH到您构建服务器并运行此命令以安装Ansiblesudo apt-get install ansible -y 您可以通过运行来确保安装Ansibleansible --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

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

91730
领券