ansible中文手册-基础模块使用
此篇文章主要是翻译ansible官网文档而来,在里面讲述了如何使用ansible的基础模块,总体感觉比较晦涩,但是后面会写出自己相关实践的文档,从而更加通俗易懂,官网的东西拿来当手册偶尔翻翻也是很不错的,具体内容如下:
1、 并行和shell命令
设置ssh-agent记住认证
$ ssh-agent bash $ ssh-add ~/.ssh/id_rsa |
当使用密码的时候,可以使用选项—ask-pass(-k),此种方式比ssh-agent好很多
重启Atlanta组主机在10秒内,如下:
$ ansible atlanta -a "/sbin/reboot" -f 10 |
在默认情况下,ansible使用的是当前用户,当你需要使用其他用户的时候,可以使用选项-u username,如下:
$ ansible atlanta -a "/usr/bin/foo" -u username |
当需要使用sudo的时候,可以使用如下:
$ ansible atlanta -a "/usr/bin/foo" -u username --sudo[--ask-sudo-pass] |
--ask-sudo-pass(-K)此选项是用来询问sudo的密码,如果设置了,如果未设置,那么无需使用
也可以在sudo到别的用户来进行执行,如下:
$ ansible atlanta -a "/usr/bin/foo" -u username -U otheruser[--ask-sudo-pass] |
参数-f 10表示并发进行,也就是10个进程同时运行,在使用的时候,默认的情况下为5,选择合适的数据,从而使得系统能够进行处理
参数-m表示选择的模块,在默认情况下,command是默认的模块
Command不适用于有shell变量的情况,也不适用于有管道符的情况,如果要使用此种情况,那么可以使用shell模块
使用shell模块,如下:
$ ansible raleigh -m shell -a 'echo $TERM' |
2、 文件传输
Ansible可以并行scp很多文件到很多机器上。
传输文件到很多主机,如下:
$ ansibleatlanta -m copy -a "src=/etc/hosts dest=/tmp/hosts" |
File模块运行修改用户和用户组权限,相同的选项表示传送文件,如下:
$ ansible webservers -m file -a "dest=/srv/foo/a.txt mode=600" $ ansible webservers -m file -a "dest=/srv/foo/b.txt mode=600 owner=mdehaan group=mdehaan" |
File模块也可以创建目录,相当于命令mkdir–p,如下:
$ ansible webservers -m file -a "dest=/path/to/c mode=755 owner=mdehaan group=mdehaan state=directory" |
也可以用来删除文件或者是递归的删除目录,如下:
$ ansible webservers -m file -a "dest=/path/to/c state=absent" |
3、 管理包
管理包主要是用来管理YUM。
确定一个包已经安装,但是不更新,如下:
$ ansible webservers -m yum -a "name=acme state=present" |
确定一个包安装的是指定版本,如下:
$ ansible webservers -m yum -a "name=acme-1.5 state=present" |
确定一个包是最新包:
$ ansible webservers -m yum -a "name=acme state=latest" |
确定一个包未安装,如下:
$ ansible webservers -m yum -a "name=acme state=absent" |
4、 用户和用户组
User模块可以轻易的创建用户和管理已经存在的用户和组,如下:
$ ansible all -m user -a "name=foo password=<crypted password here>"
$ ansible all -m user -a "name=foo state=absent" |
5、 服务管理
确定一个服务正在运行:
$ ansible webservers -m service -a "name=httpd state=started" |
重启一个服务:
$ ansible webservers -m service -a "name=httpd state=restarted" |
确定一个服务是停止的:
$ ansible webservers -m service -a "name=httpd state=stopped" |
6、 限制后台运行时间
后台运行总是耗费比较长的时间,从而其状态在随后总是能够查看的,如果踢掉主机,又不想轮训,如下:
$ ansible all -B 3600 -P 0 -a "/usr/bin/long_running_operation --do-stuff" |
如果要检查服务的状态,可以使用模块async_status,传递job id,如下:
$ ansible web1.example.com -m async_status -a "jid=488359678239.2844" |
轮训是内建的,如下:
$ ansible all -B 1800 -P 60 -a "/usr/bin/long_running_operation --do-stuff" |
参数-B表示运行最多30分钟,30*60,-P 60 轮训其状态每60S,
当时间运行在-B参数后的时间之后,此服务会被停止运行。
可以使用参数—forksvalue,来确保服务尽快运行
7、 收集信息
可以查看相关的信息,用于过滤等,如下:
$ ansible all -m setup |
下面为个人微信公众号~~
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述