使用 ansible 命令可以快速的去执行一些任务,这些任务你可能不打算保存下来 ... ansible ,后面加上主机,先用一个 all ,表示所有 .. 再添加一个 module name ,指定一下要使用的模块。 在 ansible 里面定义了一些模块,这些模块可以去执行不同的任务 .. 先用一个 ping 模块 ...
如果直接执行,会用 root 身份在所有的主机上执行这个 ping 任务 .. 我们也可以指定一个远程用户的名字,添加一个 --user 选项,使用 vagrant 这个用户登录到主机去执行任务 .. 因为我们还没有配置使用 ssh key 登录,所以要再加上一个 --ask-pass ,表示使用密码登录 ...
ansible all --module-name=ping --user=vagrant --ask-pass
会提示输入密码,这个密码就是 --user 选项后面指定的那个用户的登录密码 ...
这样 ansible 会在所有的在 inventory 里面列出的主机上执行 ping 这个任务 ... 它的作用就是测试是否能连接到这些主机 ...
再执行一下 .. 这回把 all 换成 manager ... 这样就只会在 inventory 里面定义的 manager 这个群组下面列出的主机上执行任务 ...
再试一下 ... ansible all ,用一个 --args 参数 ... 它后面我们直接加上一条要在主机上执行的命令 ... 输出用户的主目录 ... 使用 vagrant 这个用户 .. 再加上 --ask-pass
ansible all --args 'echo ~' --user=vagrant --ask-pass
提示 SUCCESS ... 用户的主目录是 /home/vagrant,表示我们当前登录到远程主机使用的用户就是 vagrant 这个用户 ... 再试一下 ... 后面加上一个 --become 选项 ... 默认它会让用户的身份变成 root ... 也就是如果要执行的任务需要 root 权限,你可以加上这个 become 选项 ...
ansible all --args 'echo ~' --user=vagrant --ask-pass --become
执行一下 ... 输入 vagrant 用户的密码 ... 这里会显示用户的主目录是 /root ,这就表示我们是用 root 的身份执行的这个任务 ...
这些选项很多都有简写的形式 ... args 的简写形式是 -a ... --user 的简写形式是 -u ... --ask-pass 的简写形式是 -k ... --become 的简写形式是 -b ..
ansible all -a 'echo ~' -u vagrant -k -b