Ansible 实现 role 运维自动化高级用法| 学习笔记

简介: 快速学习 Ansible 实现 role 运维自动化高级用法

开发者学堂课程【自动化运维工具 Ansible 实战 Ansible 实现 role 运维自动化高级用法】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/577/detail/7981


Ansible 实现 role 运维自动化高级用法


内容介绍

一、创建账号

二、部署软件

三、实现主配置文件

四、使用角色

五、调用多个角色

六、综合案例

七、增加标签

八、整除

一、创建账号

NJINX 角色的基本使用,实现了一个 NJINX 的角色,如果有多个角色,通过角色 NJS 中定义了多个任务,包括模板的使用。

nginx_role.yml

roles

httpd

memcache

mysql

nginx

tasks

group.yml

main.yml

restart.yml

start.yml

templ.yml

user.yml

yum.yml

templates

nginx.conf.j2

如果定义别的角色,例如实现 httpd 角色。

代码如下:

Cd httpd/

Bash:cd:httpd/:No such file or directory

Cd roles/httpd/

1s

//在 httpd 角色中搭建实现 httpd 服务,但是 httpd 服务和 NJINX 服务是同类型的,一个是提供 web 服务,httpd 也是一样的 web 服务,所以通常,在同一个主机上不会实现两个服务,一般实现的都是不同的服务。httpd 也类似的实现这样的功能,比如建立 httpd 的用户,把包装上,装上之后通过启动服务配置 httpd。

//建立独立的文件夹

Mkdir tasks

Cd tasks

Is

//在 tasks 中实现基本的任务,比如创建 apache 账户,先查看当前的机器是否有 apache 账户

Getent passwd apache

Apache:x:48:48:apache:/usr/share/httpd:/sbin/nologin

//这表示当前的机器已经有 apache 账户,如果有应该先卸载 web 服务

ansible all -m shell -a ‘yum -y remove httpd’

//卸载完成以后对应的用户账号,如果用对应的 user模块管理,应该删除账号

ansible all -m shell -a ‘name=apache,state=absent’

//如果有加目录,一些数据需要删除应该书写。

Remove=yes

现在对于这台主机,服务和账号都不存在了。

//通过定义 user 的一个剧本,建一个创建用户的剧本。

-name:create user

//创建用户使用 user ,为了使创建的用户具有系统的一些信息,需要指定系统属性。这里不需要指定 id 和组,组会自动创建好。

User:name=apache system=yes shell=/sbin/nologin


二、部署软件

创建完账号后,需要再部署软件。通常 apache 软件可以用 yml 安装,如果生产中要编译安装,不需要在每个 yml 中都编译,可以找一个系统一模一样的,比如在 Sentinels 某一个版本上创建好编译安装的所有数据,然后把安装目录整个打包传到目标主机上就可以了。目标主机的版本应该是一样的。比说这边是 Sentinel7.2,那边也是7.2。这样传过去之后直接启动程序就可以了。

//模拟场景,假设已经有了一些文件,已经生成了。把相应的文件复制过去,代码如下:

vim copyfile.yml

//假设在磁盘上有一些文件已经生成了,用 file 模块把它们传过去

name:copy files

copy:src=

//src 后面跟文件路径,如果放在专门的files目录下,就不用写路径。所以这里直接放在对应的目录下,比如直接先准备好文件。

cd ansible/roles/httpd/

ls

tasks

//建一个文件夹,在里面建文件就即可。

mkdir files

//查看是否有对应的包

rpm -qa httpd

httpd-2.4.6-67.e17.centos.x86_64

//复制web服务的,httpd 服务的配置文件,复制到 files 目录下,这就相当于要复制的文件

cp/etc/httpd/conf/httpd.conf files/

//由于已经放置到 files 目录下,所以可以直接写文件名,复制到目标,比如 dest ,复制到对应的目录下。Copy 模块是复制文件的,复制过去以后,把所有者输出组,比如把所有者改为 apache 。因为前面已经创建了 apache 账户,这样复制过去就可以了。

name:copy files

copy:src=httpd.conf dest=/data/ owner=apache

一般后面还有启动服务之类的,具体介绍见上节课,这里不作详细解释。


三、实现主配置文件

这就是服务的基本操作,接下来是实现主配置文件。一个主的剧本文件,这个剧本文件定义了如何去调用 copyfile.yml user.yml 这两个剧本文件,定义谁是前后。

//定义名为 main 的剧本文件。

vim main. yml

//在剧本文件中,指定它的执行次序,定义完之后就有次序了,执行代码时就会按照次序执行。

-include:user.yml

-Include:copfile.yml.

//以下是 httpd 角色具有的相关文件:

files:

httpd.conf// 这是将来要复制的文件

tasks:

copyfile.yml//这是对应的使用到的剧本文件

main. yml

user. Yml


四、使用角色

//编辑一个创建使用角色的文件

Vim httpd_role.yml

//定义每个机器来调用这个角色

-hosts:websrvs

Remote_user:root

Roles:

-httpd

//这样就可以调用引用此角色。检查能否正常使用

ansible-playbook httpd_role.yml

执行效果如下:表示成功

image.png


//验证之前创建的账号是否成功复制进去文件。

Ansible all -m shell -a ‘ls -1/data/’

执行结果如下:表示成功

image.png


//验证账号是否生成

Ansible all -m shell -a ‘getent passwd apache’

执行效果。

这里没有账号生成是因为之前是在 webservice 中生成的。

如下所示,目前拥有两个角色,相当于针对不同的企业服务器定义了两个角色,一个是 httpd,一个是 nginx,memcache 和 mysql 还未创建,是空的。

Roles

nHttpd

uFiles

lhttpd.conf

uTasks

lcopyfile.yml

lmain.yml

luser.yml

nMcache

nMysql

nNginx:

utasks:

lgroup.yml

lmain.yml

lrestart.yml

ltempl.yml

luser.yml

lyum.yml

utemplates:

lnginx.conft.j2


五、调用多个角色

如果要在一个角色中跨项目调用角色,之前调用的是一个角色,如果要调用另外一个角色,如果调用的是另外一个角色,其中另外一个角色中可能有一些相应的任务,比如要求在一个角色中调用其中一个命令,调用 copy ,这是可行的。在一个角色中调用另一个角色或者调用多个角色都是可以的。

举例,同时使用两个角色,在两台多个服务器上把 httpd nginx 角色都应用起来,通常 httpd 角色和 nginx 角色应该是不同功能的。现在假设,网络中有两个功能完全不同的角色,一个是 httpd 的服务,是提供 web 服务,另外一个是提供 pvd 服务,是完全不一样的,需要把这两个角色同时设置在同一组服务器上。

实现这个要求,需要把之前的操作都清除。

ansible all -m user -a ‘name=apachestate=absent’

//删除目录

ansible all -m shell -a ‘rm -rf/data/’

//删除 apache

ansible all -m shell -a ‘yum -y remove nginx’

//删除用户,直接使用 userdel 删除

ansible all -m shell -a ‘userdel -r nginx’

调用两个角色是很简单的操作。

Is

Httpd_role.yml nginx_role.yml roles

//复制 ngx ,调用多个角色

Cp nginx_role.yml some_role.yml

Vim some_role.yml

//只需要再添加一个 role ,这样就实现了定义多个角色,在 websrvs 服务器上将应用两个角色,这两个角色假设是不同类型的服务。因为实际上中 httpd 和 nginx 都是提供 web 服务的,是不合理的,这里是假设。

-hosts:websrvs

Remote_user:root

Roles:

-role:httpd

-role:nginx

//测试能否同时把多个角色应用在一个服务器上

ansible-playbook some_role.yml

执行效果如下:两个角色都完成了。

image.png


//查看数据

ll/data/

执行如下:表示成功

total 12

-rw-r—r 1 apache root 11753 May 30 14:17 httpd.conf

//查看对应的服务

ss -ntl

执行如下:表示成功

image.png


结果中有两个80,第一个表示是 ipv4 的地址,第二个80表示是 ipv6 的地址,两个不冲突。

调用另外一个角色的一些任务。

//在一个角色中调用另外一个角色中的任务,比如 nginx 中有一个 tasks ,它引用的都是本服务器本角色中的各种任务。

vim role/nginx/tasks/main.yml

-include:group.yml

-include:user.yml

-include:yum.yml

-include:templ.yml

-include:start yml

//现在要引用另外一个角色,比如之前的 httpd 角色,httpd 角色中有一些其他的任务。在 nginx 里借调 httpd 中的 copyfile.yml 任务,不需要重新写一份代码,也不需要拷贝文件,直接调用就可以。

具体做法如下:

vim role/nginx/tasks/main.yml

-include:group.yml

-include:user.yml

-include:yum.yml

-include:templ.yml

-include:start yml

-include:Roles/httpd/tasks copyfile.yml

//表示原来的继续使用,还要再调用别人的任务。调用时,角色的路径很重要。指定是 Roles/httpd/tasks copyfile.yml,这就是跨项目调用别的角色中的任务。如果在同一个角色直接写文件即可,不同的角色需要指定路径。

//为了查看效果,删除之前的文件。

ansible all -m shell -a ‘rm -rf/data/’

//删除之后随便查找机器检查是否删除干净,下面的表示删除干净了。

ll/data/

total 0

//前面已经有了 ngx 角色,这里只需重新执行一遍就可以了。这个角色本身已经包含了之前调用的别的角色中的任务,因为已经把 main 文件修改了,修改了 ngx 中的 main 文件,它除了调用本角色中的任务,还可以调用别的角色中的任务,所以执行 ngx ,调用 ngx 中的角色,自然的就既调用了本角色里的任务,也执行了别的角色中的任务。

cat nginx_role.yml

-hosts:websrvs

Remote_user:root

Roles:

-role:nginx

//由于之前已经做过了用户账号,安装包,这里不会再执行,但是复制文件可能会执行。

运行代码发现出错了,是因为要复制的文件出现了问题,copyfile 文件的路径是在 http 目录下,不是在 ngx 目录下,是文件路径存在问题。复制文件不在一个目录下可能会存在问题,可以通过写绝对路径解决这个问题。

之前在 vim roles/httpb/tasks/copyfile.yml 中书写的是相对路径,修改为绝对路径。

copy:src=/etc/httpd/conf/httpd.conf dest=/data/ owner=apache

执行效果如下,表示成功

//检查文件是否复制过来。如下表示成功。

ll /data/

total 12

-rw-r—r 1 apache root 11753 May 30 14:17 httpd.conf

以上就是跨角色调用另外一个角色中的任务,要注意文件的问题,如果文件是相对路径,跨角色会找不到文件路径。


六、增加标签

针对角色中定义相关的一些 target 也就是标签。针对不同的角色加标签。比如之前有两个角色,可以再调用它们的 paybook 中加对应的标签。这里出现了 nginx_roe.retry 是由于失败生成的,失败就会生成这个日志。

//创建两个角色,打开对应的剧本文件,在这里针对两个或者多个角色起标签。标签的方法是加 {role:httpd,tags:} 相当于字典,键值对。

标签是一个列表,可以起多个标签。比如 {role:httpd,tags: [‘web’,’httpd’] },这是相当于给 role 运行时添加了标签,属于 web,也属于 httpd。类似的实现 nginx -{role:nginx,tags: [‘web’,’nginx’] }

Vim some_role.yml

-hosts:websrvs

Remote_uesr:root

Roles:

-{role:httpd,tags:[‘web’,’httpd’]

-{role:nginx,tags:[‘web’,’nginx’]

//这是对当前的角色起标签,这就意味着在将来执行剧本时可以挑一些标签执行。标签是给对应的内容加一些标签,就可以挑选性的执行标签。在这里挑 web 相当全部执行,挑 nginx 就只执行 nginx 标签。

//为了查看效果,专门构建一个 app 角色。在目录中查看到新建的 app 角色。

其中 app 角色名称只是一个 App ,它不是由多个元素组合成,只有一个值。

Cp -r nginx/app/

vim some_role,yml

-hoets:websrvs

Remote_uesr:root

Roles:

-{role:httpd,tags:[‘web’,’httpd’]}

-{role:nginx,tags:[‘web’,’nginx’]}

-{role:app,tags:[‘app’]}

//这里标签定义完之后,如果只运行 web 而不运行 app

Ansible-playbook -t web some_role.yml

虽然 some 中定义了很多角色,但这里是挑 web 执行,所以就只会运行 {role:httpd,tags:[‘web’,’httpd’]}

{role:nginx,tags:[‘web’,’nginx’]}。运行结果中 httpd 和 nginx 的任务都执行了,app 的角色没有被执行。

//还可以加入一些条件判断,只有在特定的情况下采取执行,比如在特定的情况下执行 ngx ,添加单独的 when 语句。比如在版本是只有7的情况下才可以执行。

判断版本6和7用 ansible_distrubution_。为了看效果把 hoets:websrvs改为 hoets:all

-hoets:all

Remote_uesr:root

Roles:

-{role:httpd,tags: [‘web’,’httpd’]

{role:nginx,tags:[‘web,’nginx],when:ansible_distribution_major_version==”7”}

-{role:app,tags: [“app”] }

//这次不需要添加标签,加标签也可以,执行的是 web’’httpd’

对于

{role:nginx,tags:[‘web,’nginx],when:ansible_distribution_major_version==”7”}角色不会针对 sentinels 6执行,对于 {role:httpd,tags:’app’} sentinels6和sentinels 7 都会执行,因为没有制定条件。

执行效果如下:

httpd的角色执行完,nginx 的角色跳过了,103本身就是 sentinel6 ,app 也继续执行了。App 是复制的所以和 nginx 是内容是相同的,这就是模拟了一个过程。

因为在前面已经执行过,所以有些结果是绿色的,在 sentinels6 上没有执行所以是黄色的,有的代码出错是因为启动时出现了问题,在 {role:nginx,tags:[‘web,’nginx],when:ansible_distribution_major_version==7}已经在 sentinel7 把 ngx 服务已经启动了,结果由于 {role:httpd,tags:’app’} 中的 app 和 ngx 完全一样,所以 app 也尝试启动服务,这样由于它们都是80端口,nginx 先启动了,所以就会报错提示错误103失败。

//检测103失败是否是因为有 httpd 服务

ss -ntl

执行结果中没有80端口,因为使用的是7的版本,直接复制代码过去,格式对不上,这个错误是由于版本问题不同出现的。在 app 目录下调用了 nginx 模板,模板使用的是 sentinel7,复制到 sentinel6 使用会出现问题,是由于版本问题不同导致的,不是语句有问题。

这是介绍的 ngx ,包含各种角色,在生产中可以考虑针对不同的服务器定义成不同的角色,在调用时非常方便。


七、综合案例

综合之前所学的内容实现一个问题,包括前面所学的 handler,文件,模板都可以使用。

//建立一个新的应用,名为 app,app 中定义的内容综合了创建账号,组,模板,handler 等知识。

mkdir app

cd app

ls

//这次用 http 服务实现,先建一些文件夹,在 APP 目录下,这本身是一个角色,建立一些相关的文件夹,比如说 tasks,模板 template,变量 vars ,handlers 触发器,如果有文件也要建立文件。

Pwd

/root/ansible/roles/app

Mkdir tasks templates vars handlers files

这样就建立了一个完整的架构。 app 是模拟应用,以 http 服务器软件为例,http 服务器,首先建立对应的用户,在 tasks 中加入创建账号的内容。

//先清理数据,删除用户,卸载服务。

ansible all -m shell -a ‘rm -rf/data/’

ansible all -m shell -a ‘undel -r appache ’

ansible all -m shell -a ‘yum -y remove httpd’

//假设有一个应用程序,要部署一个角色,先在 tasks 中准备相关任务,首先根据前面的流程,创建账号,创建组,包括在其中准备一些必要的模板,文件复制,变量等等

cd tasks

ls

//创建组,命名为 app ,指定为系统组。在这个组中没有 share。这里是模拟应用,所以用 app 代称。

Vim group .yml

-name :create group

Group:name=app system=yes gid=123

//创建用户,指定用户的组和系统,指定shell,一般服务使用的是 shell=/sbin/nologin ,也可以指定 uid 地址,查找一个未被使用过的 uid 地址:ansible all -m shell -a ‘getet passwd|grep 123’,123没有被使用过。组也要统一加上 gid=123 地址

Vim user .yml

-name :create user

user:name=app system=yes shell=/sbin/nologin uid=123

//创建完用户后进行装包,用 http 包模拟装包。

Vim yum.yml

-name: install package

Yum: name=httpd

//装完包之后,拷贝模版,查看本机的模板文件是否安装了 http 服务,如果 http 服务已经装上,就可以在此基础上进行修改之后当模板。

Vim/etc/httpd/conf/httpd.conf

//没有发现适合当模板的地方,再查看是否有调动模版的比较合适的位置。

rpm -ql httpd

rpm -ql httpd|less

//把复制/etc/httpd/conf/httpd.conf..过去当模版,复制到 templates 的目录下,改名为

conf.j2

cp/etc/httpd/conf/httpd.conf../templates/httpd.conf.j2

vim../templates/httpd.conf.j2

//尝试调用一个变量,在监听端口处,监听端口默认是80,改为用一个变量表示。假设用刚才的 CPU 数据,目前是两个 cpu,这里改为 cpu*10。4个cpu*10是40,Cpu 的个数是 processor-vcpus

Listen {{ansible-processor-vcpus*10}},

//用变量实现用户,变量用刚才创建好的两个用户,但是暂时先不定义用户,用变量实现。

User{{username}}

Group{{groupname}}

//准备变量文件,在之前已经规划好一个文件夹 vars,在 vars 下建 main.myl,在 main 中定义变量,变量的内容直接赋值就可以。定义完变量之后,将来就可以使用。

Vim vars/main.yml

-Username:app

-groupname:app

//拷贝模板

Vim tasks/templ.yml

name:copy conf

Template:src=httpd.conf.j2 dest=/etc/httpd/conf/httpd.conf

Notify: restart service

//触发一个 Notify, 重启服务,触发的 handler 应该放在专门的一个目录中。

//创建 handler,handler 放在专门的一个目录中。之前已经创建好了 handler ,这里只需在 handler 中创建对应的 handler。要求名字必须叫 retart service

Vim handlers/restart.yml/

name: retart service

service: name=http state=restarted

//按照任务列表目前还缺少服务启动,建立服务启动。

Vim tasks/start.yml

name: start service

service: name=httpd state=started enabled=yes//设置为开机启动

这样就实现了初步的设置。检查格式是否有问题。

缺少 files 文件

//拷贝一个配置文件过去,假设建一个文件,这也属于配置文件。在 tasks 中建文件。加一个新任务,用 copy 模块实现。Copy 模块对应的 src 文件在 files 目录中,不用书写。

复制到/etc/httpd/conf.d/下。权限用 ngx ,更改权限 owner=app,所有者是 app。

Touch files/vhosts.conf/

vim tasks/copyfile.yml

name:copy config

Copy: src=vhosts.cof dest=/etc/httpd/conf.d/ owner=app

//这样就初步建好了文件,进到 tasks 中定义次序。定义先执行 group,第二步 user ,第三步 yum,第四步 templ,之后拷贝文件,最后是 start

cd tasks

ls

Copyfile.yml group.yml start.yml user.yml yum.yml

vim main.yml

-Include: group.yml

-Include: user.yml

-Include: yum.yml

-Include: templ.yml

-Include:copyfile.yml

-Include:satart.yml

//检查能否运行,验证是否正确。服务不一定可以启动,因为这里定义的是 app 。yml 安装完后默认把文件夹所有者配置为 apache。这里创建的服务是 app ,所以服务可能存在问题。

先查看是否有属于 apache 的目录的文件,发现没有,可以尝试运行是否能成功。因为把默认的 apache 账户改为 app 了。

//创建一个角色,角色修改为 app

Cd httpd_role.yml app_role.yml

-hosts:websrvs

Remote_users:root

Roles:

-app

//测试当前编写的 paybook 能否正常运行。

ansible-paybook-c app_role.yml

//测试语法结果报错,修改格式。把”-“删除

Vim roles/apps/vars/main.yml

Username:app

groupname:app

//再次测试报错,查看路径,restart.yml 应该是main.yml 。进到角色中,修改文件名,内容不进行修改。

Cd roles/app/handlers

is

restarts.yml

mv restart.yml main.yml

//再次测试,检查语法,运行成功。

ansible-paybook -c app_role.yml

//正式执行,查看两个主机服务是否起来了

ansible-paybookapp_role.yml

ss-ntl

//有80端口,在检查是不是由 app 账户启动,可以根据 cpu 个数进行判断,发现执行的 cpu 个数是40,所以确定是以 app 的身份运行的。

Ss -ntlp grep app

执行结果

//检查文件是否拷贝过来,文件是空文件,是举的一个例子,检查发现成功复制过来。

ls /etc/httpd/conf.d/

以上运用所学知识解决了一个有规模的项目,可以在搭建服务器时借助这行批量署。


八、整除

小技巧:在模板中讲解过加减乘除的知识,还有整除的知识未讲解。

比如有个角色是空的没有建,memcache 改名为 memcached,给这个角色建两个文件夹。

两个文件夹建好以后,借助一个模板设置此 Memcached 的服务。Memcached 的服务是当作缓存使用的。先在本机安装 Memcached,安装好后,拿 Memcached 的配置文件当模板使用。

Mv memcache/memcached

Cd Memcached

Mkdir tasks templates

Yum install Memcached

//查看 Memcached 的配置文件,在 /etc/sysconfig/Memcached 中定义了一些东西

Rpm -ql Memcached

//查看

/etc/sysconfig/Memcached

Cat /etc/sysconfig/Memcached

PORT="11211"

USER= " memcached"

MAXCONN=" 1024”

CACHESIZE= "64”

OPTIONS=""

//Memcached 是内存当缓存使用的,CACHESIZE="64”就是缓存占用空间大小,是以兆为单位,Memcached 装完后在内存中会占用固定大小的64兆的作为缓存,64兆对于大型服务器来说不够使用,所以需要根据物理内存的大小来决定此内存的缓存大小。

比如要占用物理内存的四分之一,实现这个要求就需要用 template 中的整除知识。目前两个机器物理内存的大小都是 1G,所以增加内存使其不一样,一个改为2G。在两台主机上部署 Memcached,部署的 Memcached 在启动后占用内存是物理空间的四分之一。

Memcached 的配置文件中 PORT="11211" “11211”是 Memcached 在的端口号,如果 Memcached 的端口号”11211”启动了就代表服务器就起来了。而且可以看到 /user/lib/systemd/system/Memcached.service 是 Memcached 的服务名。学了这些知识以后,拿到一个新模板,可以知道它的一些特性。

//把 Memcached 作为模板,复制到 templates 文件夹中,文件名是 j2。

Cp /etc/sysconfig/ Memcached templates/ Memcached.j2

//修改文件中的 CACHESIZE= "64”,用 ansible_memtotal_mb 除,如果使用”“除会有小数。所以使用”//”整除。

Vim templates/Memcached.j2

PORT="11211"

USER= " memcached"

MAXCONN=" 1024”

CACHESIZE= "ansible_memtotal_mb//4”

OPTIONS=""

//查看物理内存的四分之一可以用以下代码:

Ansible all -m setup -a “filter=”memtotal

//建立 tasks 双包的文件。包名是 memcached

Vim tasks /yum.yml

-name install package

Yum:name=memcached

//建一个启动服务的代码

-name: start service

service: name=memcached state=started enabled=yes

//补充一个模板文件,模板文件放在当前目录下所以只写文件名就可以。

Vim tasks/templ.yml

-name:copy conf

template: src=memcached.j2 dest=/etc/sysconfig/Memcached

//准备一个 main 文件引用。

Vim tasks/main.yml

-include:yum.yml

-include:templ.yml

-include:start.yml

//检验是否成功。

Tree

Tasks:main.yml

Start.yml

templ.yml

yum.yml

temlates:

Memcached.j2

表示成功。

//调用脚本,调用剧本

Vim Memcached_role.yml

-hosts: websrvs

Remote-user: root

Roles:

-memcached

//测试没有错误显示。

Ansible-paybook -c Memcached_role.yml

//正式执行。

Ansible-paybook Memcached_role.yml

//检查是否成功,检查服务是否已经启动,检查到有端口是11211表示成功。

Ansibe all -m shell -a ‘ss -ntlpe’

//检查复制过去的文件,里面应各不相同

Ansible-all -m shell -a ‘cat’/etc/sysconfig/memcached”

//结果报错,检查模板

Vim roles. Memcached/templates/ memcached.j2

PORT="11211"

USER= " memcached"

MAXCONN=" 1024”

CACHESIZE= "{{ansible_memtotal_mb//4}}”

OPTIONS=""

把文件拷贝过去就可以了。

//再次执行,正常是 handler 触发一下,配置文件重拷,应该重启服务。

Ansible-paybook Memcached_role.yml

//再次查看

Ansible-all -m shell -a ‘cat’/etc/sysconfig/memcached”

结果分别是 CACHESIZE= "524”, CACHESIZE= "268”, CACHESIZE= "524 是两个 G 的四分之一,CACHESIZE= "268”是一个 G 的四分之一。这就是角色的使用。

相关文章
|
1月前
|
运维 应用服务中间件 网络安全
自动化运维的新篇章:使用Ansible进行服务器配置管理
【10月更文挑战第34天】在现代IT基础设施的快速迭代中,自动化运维成为提升效率、确保一致性的关键手段。本文将通过介绍Ansible工具的使用,展示如何实现高效的服务器配置管理。从基础安装到高级应用,我们将一步步揭开自动化运维的神秘面纱,让你轻松掌握这一技术,为你的运维工作带来革命性的变化。
|
1月前
|
运维 应用服务中间件 Linux
自动化运维的利器:Ansible在配置管理中的应用
【10月更文挑战第39天】本文旨在通过深入浅出的方式,向读者展示如何利用Ansible这一强大的自动化工具来优化日常的运维工作。我们将从基础概念讲起,逐步深入到实战操作,不仅涵盖Ansible的核心功能,还会分享一些高级技巧和最佳实践。无论你是初学者还是有经验的运维人员,这篇文章都会为你提供有价值的信息,帮助你提升工作效率。
|
19天前
|
运维 Ubuntu 应用服务中间件
自动化运维之路:使用Ansible进行服务器管理
在现代IT基础设施中,自动化运维已成为提高效率和可靠性的关键。本文将引导您通过使用Ansible这一强大的自动化工具来简化日常的服务器管理任务。我们将一起探索如何配置Ansible、编写Playbook以及执行自动化任务,旨在为读者提供一条清晰的路径,从而步入自动化运维的世界。
|
16天前
|
运维 网络安全 Python
自动化运维:使用Ansible实现批量服务器配置
在快速迭代的IT环境中,高效、可靠的服务器管理变得至关重要。本文将介绍如何使用Ansible这一强大的自动化工具,来简化和加速批量服务器配置过程。我们将从基础开始,逐步深入到更复杂的应用场景,确保即使是新手也能跟上节奏。文章将不包含代码示例,而是通过清晰的步骤和逻辑结构,引导读者理解自动化运维的核心概念及其在实际操作中的应用。
|
17天前
|
运维 Ubuntu 网络协议
自动化运维:使用Ansible进行服务器配置管理
在现代IT架构中,自动化运维已成为提升效率、减少人为错误的关键。本文将介绍如何使用Ansible这一强大的自动化工具来简化和标准化服务器的配置管理过程。通过具体的代码示例和操作步骤,我们将展示如何快速部署应用、管理配置以及自动化日常任务,从而确保环境的一致性和可靠性。
|
1月前
|
运维 监控 安全
自动化运维的利剑:Ansible在现代IT架构中的应用
在数字化浪潮中,企业对IT系统的敏捷性和可靠性要求日益提高。Ansible,一种简单但强大的自动化运维工具,正成为现代IT架构中不可或缺的一部分。它通过声明式编程语言YAM,简化了系统配置、应用部署和任务自动化的过程,显著提升了运维效率和准确性。本文将深入探讨Ansible的核心特性、应用场景以及如何有效整合进现有IT环境,为读者揭示其在自动化运维中的实用价值和未来发展潜力。
|
28天前
|
关系型数据库 MySQL Java
【Docker最新版教程】一文带你快速入门Docker常见用法,实现容器编排和自动化部署上线项目
Docker快速入门到项目部署,MySQL部署+Nginx部署+docker自定义镜像+docker网络+DockerCompose项目实战一文搞定!
|
29天前
|
运维 安全 Ubuntu
自动化运维:使用Ansible进行服务器配置管理
在现代IT基础设施中,自动化运维是确保高效、稳定和安全服务的关键。本文将深入介绍如何使用Ansible这一开源工具来简化服务器配置管理工作,从基础安装到高级应用,我们将一步步展示如何通过Ansible Playbooks实现自动化部署和维护,旨在帮助读者构建更加灵活和可扩展的运维体系。
42 7
|
28天前
|
运维 Ubuntu Linux
自动化运维:使用Ansible简化日常任务
在快节奏的IT世界中,时间就是一切。本文将揭示如何通过Ansible这一强大的自动化工具来节省宝贵的时间,从而提高效率和减少人为错误。我们将深入探讨Ansible的核心概念、安装过程以及如何编写简单的playbook来自动执行常见运维任务。无论你是新手还是有经验的系统管理员,这篇文章都将为你提供实用的知识和技能,让你能够更好地控制你的服务器环境。
|
1月前
|
运维 Devops 应用服务中间件
自动化运维的利剑:Ansible在现代IT架构中的应用
【10月更文挑战第42天】本文旨在揭示自动化运维工具Ansible如何革新现代IT架构,通过简化配置管理和部署流程,提升效率和可靠性。我们将探索Ansible的核心功能、语言特性以及其在DevOps文化中的角色。文章还将展示如何借助Ansible构建模块化和可重用的配置代码,实现快速迭代与部署,并确保系统一致性。通过阅读本文,运维人员将了解如何利用Ansible优化日常任务,加速产品上线速度,同时提高系统的稳健性。
38 5