Ansible配置文件、命令及模块_ansible test[0]

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取


Ansible配置文件

主配置文件ansible.cfg

配置文件内容解析

安装好ansible后,会默认生成的主要的配置文件。(yum安装自动生成,源码安装需要自行从模板复制。)下面介绍部分配置文件的具体含义

 hostfile    = /etc/ansible/hosts   //hosts文件的位置
 library      = /usr/share/ansible //ansible默认搜寻模块的位置
 pattern     = \*  //如果没有提供hosts节点,这是playbook要通信的默认主机组.默认值是对所有主机通信
 remote_tmp  = $HOME/.ansible/tmp   //Ansible通过远程传输模块到远程主机,然后远程执行,执行后在清理现场.在有些场景下,你也许想使用默认路径希望像更换补丁一样使用
 forks   = 5    //在与主机通信时的默认并行进程数 ,默认是5d
 poll_interval  = 15  //当具体的poll interval 没有定义时,多少时间回查一下这些任务的状态, 默认值是5秒 
 sudo_user  = root   //sudo使用的默认用户 ,默认是root
 #ask\_sudo\_pass = True   //用来控制Ansible playbook 在执行sudo之前是否询问sudo密码.默认为no
 #ask\_pass    = True    //控制Ansible playbook 是否会自动默认弹出密码
 transport   = smart   //通信机制.默认 值为’smart’。如果本地系统支持 ControlPersist技术的话,将会使用(基于OpenSSH)‘ssh’,如果不支持将使用‘paramiko’.其他传输选项‘local’,‘chroot’,’jail’等等
 #remote\_port  = 22    //远程SSH端口。 默认是22
 module_lang   = C   //模块和系统之间通信的计算机语言,默认是C语言
 #host\_key\_checking = False    //检查主机密钥
 timeout = 10    //SSH超时时间
 #log\_path = /var/log/ansible.log     //日志文件存放路径
 #module\_name = command     //ansible命令执行默认的模块
 #private\_key\_file = /path/to/file     //私钥文件存储位置

主机列表文件hosts

hosts文件基本格式

Ansible 通过读取主机清单/etc/ansible/hosts连接到多个远程主机上执行任务。

使用[]来对主机进行分类,可按照功能,机房,系统,业务等内容进行分类,方便对同一类型的主机进行批量操作。

[dbserver]
172.25.254.1
mysql.example.com
back.mysql.com:5505  //指定ssh的端口
test ansible_ssh_port=5321 ansible_ssh_host=172.25.254.2 //设定别名为test
db[1...5].example.com  //支持通配符

可以为主机指定连接类型和连接用户

[web]
localhost ansible_connection=local
web1.example.com ansible_connection=ssh ansible_ssh_user=web
hosts文件可以使用的指令
ansible_ssh_host     //指定主机别名对应的真实 IP
ansible_ssh_port      //指定连接到这个主机的 ssh 端口,默认 22
ansible_ssh_user     //指定连接到该主机上的用户
ansible_sudo_pass      //sudo 密码
ansible_sudo_exe       //sudo 命令路径
ansible_connection   //连接类型,可以是 local、ssh 或paramiko,ansible1.2 之前默认为 paramiko
ansible_ssh_private_key_file      //私钥文件路径
ansible_shell_type       // 目标系统的 shell 类型,默认为sh

Ansible命令

参数

-v:输出详细信息(可以使用多个v)
-i PATH:指定hosts文件位置
-f NUM :指定开启的进程数(默认为5)
-m MOULE :指定module的名称(默认为command)
-m DIRECTORY:指定module的目录来加载module,默认是/usr/share/ansible
-a,MODULE_ARGS:指定module模块的参数
-k:提示输入ssh的密码,而不是使用基于ssh的密钥认证
-u USERNAME:指定移动端的执行用户
-C:测试此命令执行会改变什么内容,不会真正的去执行

ansible指定主机或主机组的方法

直接指定

在命令中直接指定主机或主机组的名称。

ansible test-m shell -a 'cp /etc/ansible/ansible.cfg /etc/aansible.cfg.bak' 
使用通配符

匹配所有的主机:all 或 *

ansible all -m ping

匹配具有规则特性的主机或主机名

ansible *.example.com -m ping

匹配多个组的主机,中间用 : 隔开

ansible db:test -m shell -a 'ls /var/log/'

在某个组而不在其他组

ansible db:!test -m command -a 'uptime'

匹配两个组的交集

ansible db:&test -m script -a '/etc/shell/ping.sh'

匹配一个组的特定主机

ansible test[0] -m copy -a 'src=/var/www/html/index.html dest=/tmp owner=root group=root mode=0766'

ansible test[0-3] -m file -a "src=/etc/resolv.conf dest=/tmp/resolv.conf state=link"

在一个主机组中,主机编号由0开始往下排。第一个命令表示test组中第一个主机;第二个命令表示test组中第1-4个主机。

混合匹配

anslible web:db:&test1:!test2 -m ping

在web或db组中,且存在于test1中,不能存在于test2中。

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

需要这份系统化的资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 22
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Ansible 的 file 模块用于管理文件和目录,而 shell 模块可以在远程主机上执行 shell 命令。而 fill 模块结合了这两个模块的功能,可以在远程主机上创建、修改和删除文件,类似于 Unix 中的 "cat" 命令。 fill 模块的主要参数包括: - path:需要创建或修改的文件路径。 - content:需要写入文件的内容。可以是字符串或者文件模板。 - backup:是否备份原文件。如果为 "yes",则会在修改文件前备份原文件。 - force:如果文件已经存在,是否强制覆盖。 下面是一个使用 fill 模块创建文件的例子: ```yaml - name: create file fill: path: /tmp/test.txt content: "hello world" ``` 这个例子会在远程主机的 /tmp 目录下创建一个名为 test.txt 的文件,并将字符串 "hello world" 写入文件中。如果文件已经存在,则 fill 模块会覆盖原文件。 除了字符串,content 参数还可以是文件模板。文件模板通常用于创建配置文件,可以包含变量和条件语句等逻辑。下面是一个使用文件模板创建文件的例子: ```yaml - name: create file from template fill: path: /etc/nginx/nginx.conf content: "{{ lookup('template', 'nginx.conf.j2') }}" ``` 这个例子会在远程主机的 /etc/nginx 目录下创建一个名为 nginx.conf 的文件,并使用 Jinja2 模板引擎渲染 nginx.conf.j2 模板文件生成文件内容。 需要注意的是,如果 content 参数是文件模板,则需要使用 lookup 函数调用模板文件。lookup 函数可以在 Ansible 中查找各种资源,包括文件、变量、密码等。在这个例子中,lookup 函数会在 Ansible 控制节点上查找名为 nginx.conf.j2 的模板文件,并将其内容渲染成字符串传递给 fill 模块

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值