ITPub博客

首页 > 数据库 > 数据库开发技术 > Ansible入门:掌握Ansible命令,提升自动化运维效率

Ansible入门:掌握Ansible命令,提升自动化运维效率

原创 数据库开发技术 作者:yj11290301 时间:2024-04-28 18:20:05 0 删除 编辑

在当今的IT自动化领域,Ansible无疑是一个无法被忽视的重要角色。其便利性和高效性受到了广大开发者和系统管理员的一致好评,成为了配置管理和应用部署的首选工具。然而,对于一些初学者来说,Ansible的概念和架构可能会显得有些复杂和难以理解。因此,我打算通过一系列深入解析Ansible的博文,帮助大家更好地理解和使用这一工具。

上期回顾:

Ansible入门:解锁IT自动化的神器

ansible命令

Ansible 命令是一种强大的自动化工具,它允许系统管理员和开发者在多台机器上自动执行任务。其中,Ad-Hot模式是一个概念性的名称,它与编写Ansible playbook的概念相似,类似于直接在命令行输入shell命令与编写shell scripts之间的关联。

具体而言,Ansible命令由以下三个主要部分组成:

1. Ansible 匹配的资产主机:这是你希望在其上执行任务的目标机器或一组机器。
2. 使用的模块 -m:这是你希望执行的具体动作或任务,Ansible提供了许多预定义的模块以供选择。
3. 模块的参数 -a:这允许你为特定模块传递参数,以便进一步定制其行为。

Ad-Hoc 命令的基本格式如下:

ansible [pattern] -m [module] -a '[module arguments]' [options]


其中:

  • [pattern]:用来匹配目标主机或主机组的模式。

  • -m [module]:指定要使用的模块。

  • -a '[module arguments]':指定模块的参数。

  • [options]:其他可选参数。


详细解释一些常用的选项:

  • -a 'Arguments', --args='Arguments':

    指定模块的参数。

  • -m NAME, --module-name=NAME:

    指定要执行的模块名。默认使用 command 模块,所以如果只是执行单一命令,可以省略 -m 参数。

  • -u Username, --user=Username:

    指定执行远程命令的用户,默认使用当前用户。

  • -U, --sudo-user=SUDO_User:

    sudo 到哪个用户,默认为 root。

  • -k, --ask-pass:

    提示输入 SSH 密码,而不是假设基于密钥的验证。

  • -K, --ask-sudo-pass:

    提示输入 sudo 密码。

  • -s, --sudo:

    使用 sudo 运行命令。

  • -S, --su:

    使用 su 命令运行命令。

  • -f NUM, --forks=NUM:

    指定并行任务数,默认为 5。

  • --private-key=PRIVATE_KEY_FILE:

    指定私钥文件的路径,用于 SSH 连接验证。

  • -v, --verbose:

    输出详细信息。

  • all:

    针对 hosts 文件中定义的所有主机执行命令。

  • -M MODULE_PATH, --module-path=MODULE_PATH:

    指定模块的搜索路径。

  • -o, --one-line:

    压缩输出,尝试将输出信息压缩到一行中显示。

  • -B SECONDS, --background=SECONDS:

    在后台运行命令,并指定超时时间。

  • -P NUM, --poll=NUM:

    在后台模式下,每隔多少秒检查一次作业状态。

  • -T SECONDS, --timeout=SECONDS:

    设置命令执行的超时时间。

  • -c CONNECTION, --connection=CONNECTION:

    指定连接类型,如 paramiko (SSH)、ssh 或 local。

  • --tags=TAGS:

    只执行指定标签的任务。

  • --list-hosts:

    只打印将执行 playbook 的主机列表,并不真正执行 playbook。

  • --list-tasks:

    列出 playbook 中所有将被执行的任务。

  • -C, --check:

    只测试命令会改变什么内容,而不会真正执行。

  • --syntax-check:

    检查 playbook 的语法,但不执行。

  • -l SUBSET, --limit=SUBSET:

    进一步限制所选主机或主机组。

  • --skip-tags=SKIP_TAGS:

    跳过标签匹配的任务。

  • -e EXTRA_VARS, --extra-vars=EXTRA_VARS:

    设置额外的变量。


示例:

以 root 用户身份对所有主机执行 df -h 命令:

ansible all -m command -a "df -h" --become --become-user root

使用 yum 模块安装 nginx,并提示输入密码:

ansible webservers -m yum -a "name=nginx state=present" -k

以 john 用户身份对 appservers 主机组执行 uptime 命令,并限制并发数为 5:

ansible appservers -m command -a "uptime" -u john -f 5


重启 testhosts 组的所有机器,每次重启 10 台:

ansible testhosts -a "/sbin/reboot" -f 10

使用额外的变量执行 playbook:

ansible-playbook update.yml --extra-vars "hosts=vipers user=admin"

只对这个两个 IP 执行任务:

ansible [pattern] -m [module] -a '[module arguments]' --limit=192.168.0.10,192.168.0.11


ansible常用命令解释

ansible-doc

# ansible-doc -h Usage: ansible-doc [options] [module...]

该指令用于查看模块信息,常用参数有两个-l 和 -s ,具体如下:

//列出所有已安装的模块 # ansible-doc -l //查看具体某模块的用法,这里如查看command模块 # ansible-doc -s command

ansible-galaxy

# ansible-galaxy -h Usage: ansible-galaxy [init|info|install|list|remove] [--help] [options] ...

ansible-galaxy指令用于方便的从https://galaxy.ansible.com/ 站点下载第三方扩展模块,我们可以形象的理解其类似于centos下的yum、python下的pip

ansible-playbook

通过读取playbook 文件后,执行相应的动作,

ansible-pull

该指令使用需要谈到ansible的另一种模式---pull 模式,这和我们平常经常用的push模式刚好相反,其适用于以下场景:你有数量巨大的机器需要配置,即使使用非常高的线程还是要花费很多时间;

ansible-vault

ansible-vault主要应用于配置文件中含有敏感信息,又不希望他能被人看到,vault可以帮你加密/解密这个配置文件,属高级用法。主要对于playbooks里比如涉及到配置密码或其他变量时,可以通过该指令加密,这样我们通过cat看到的会是一个密码串类的文件,编辑的时候需要输入事先设定的密码才能打开。这种playbook文件在执行时,需要加上 –ask-vault-pass参数,同样需要输入密码后才能正常执行。具体该部分可以参看官网

高频使用的命令

    Ping主机:

    用于测试Ansible是否能够成功连接到远程主机。

ansible all -m ping


    执行命令:

    在远程主机上执行特定的shell命令。

ansible all -m command -a "ls -l /etc"

    安装软件包:

    使用yum模块在远程主机上安装软件包。

ansible servers -m yum -a "name=nginx state=present"


    管理文件:

    使用copy模块将本地文件复制到远程主机。

ansible all -m copy -a "src=/path/to/local/file dest=/path/on/remote/host"

    管理服务:

    使用service模块启动、停止或重启远程主机上的服务。

ansible webservers -m service -a "name=nginx state=started"

    获取主机信息:

    使用setup模块收集远程主机的系统信息。

ansible all -m setup

      执行自定义脚本:

    使用script模块在远程主机上执行本地脚本。

ansible all -m script -a "/path/to/local/script.sh"

      以sudo权限执行命令:

    使用--become选项以sudo权限在远程主机上执行命令。

ansible all -m command -a "whoami" --become --become-user root


Ansible是一个功能强大且灵活的IT自动化工具。通过深入理解其核心命令和使用场景,我们可以更高效地管理IT基础设施,实现自动化的最终目标。希望本文能为大家在Ansible的使用上提供有价值的参考。

敬请关注博主,我们将持续为您带来云计算行业及更多前沿技术的最新信息,助您把握技术动态,领先一步!”

若您渴望深入了解云计算知识,或希望与云计算、运维、网络等领域的精英们共同交流学习,欢迎您私信博主,博主将为您提供宝贵的免费学习资料,并引荐您加入专业交流群。在这里,您可以与各路大咖切磋技艺,共享行业前沿资讯,一同成长进步。期待您的参与,让我们共同开启云计算领域的探索之旅!



微信号 | a2459155652
商务合作|学术交流|简历指导


扫码关注
云计算运维学习交流群


原文作者:网络豆云计算学堂;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2023-09-15

  • 博文量
    76
  • 访问量
    33968