Linux最新自动化运维工具-Ansible的Playbook的使用(3),2024年最新面试Linux运维系统架构

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前在阿里

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

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

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

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

remote_user: root

tasks:

  • name: install pk

yum: name=httpd

  • name: copy file

copy: src=file/httpd.conf dest=/etc/httpd/conf/ #只要src文件内容发生改变,就会触发handlers也就是重启服务

notify:

  • restart httpd

  • name: start httpd service

service: name=httpd state=started enabled=yes

handlers:

  • name: restart httpd

service: name=httpd state=restarted

处理器是根据对应Task的返回状态来进行判断的。当Task(任务)状态为changed时,处理器就会执行你写好的handlers(处理器)操作。

利用notify、handlers触发式重启服务。

[root@ansible ansible]# ansible-playbook apache.yml

PLAY [wsr] *****************************************************************************

TASK [Gathering Facts] *****************************************************************

ok: [192.168.100.20]

ok: [192.168.100.10]

TASK [install pk] **********************************************************************

ok: [192.168.100.20]

ok: [192.168.100.10]

TASK [copy file] ***********************************************************************

changed: [192.168.100.20]

changed: [192.168.100.10]

TASK [start httpd service] *************************************************************

ok: [192.168.100.20]

ok: [192.168.100.10]

RUNNING HANDLER [restart httpd] ********************************************************

changed: [192.168.100.20]

changed: [192.168.100.10]

PLAY RECAP *****************************************************************************

192.168.100.10 : ok=5 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

192.168.100.20 : ok=5 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

六、Playbook中tags的使用

=================================================================================

tags即标签,tags可以和一个play(就是很多个task)或者一个task进行捆绑。然后再执行play book时只需指定相应的tags即可仅执行与tags绑定的task。

[root@centos7_1yaml]# vim web-3.yml


  • hosts: web

remote_user: root

tasks:

  • name: install httpd package

yum: name=httpd state=present

  • name: install configure file

copy: src=/apps/work/files/httpd.conf dest=/etc/httpd/conf/

tags: instconf #tags

  • name: start httpd service

service: name=httpd state=started

[root@centos7_1 yaml]# ansible-playbook -tinstconf web-3.yml

#指定tags instconf 执行。

ansible-playbookweb-3.yml --tags=" instconf "

执行此命令同样仅执行instconf 标签内容。

七、tepmplates 模板的使用

=================================================================================

jinjia2


Jinja2是基于python的模板引擎,功能比较类似于PHP的smarty,J2ee的Freemarker和velocity。它能完全支持

unicode,并具有集成的沙箱执行环境,应用广泛。

Jinja2 语言: 字面量:

字符串:使用单引号或双引号;

数字:整数,浮点数

列表:[item1,item2 ……]

元组:(item1item2…,)

字典:{key1:value,key2:value….}

布尔型: true/filase

算数运算:

+,- , * , / , // , % **

比较操作:

==, != , >= ,<=

逻辑运算:

and,or, not,

流表达式

For、IF、when

模板安装nginx


在本机安装nginx服务,拷贝模板到本地,进行修改并命名为nginx.conf.j2

[root@ansible ansible]# cp /etc/nginx/nginx.conf ./

[root@ansible ansible]# head nginx.conf

For more information on configuration, see:

* Official English Documentation: http://nginx.org/en/docs/

* Official Russian Documentation: http://nginx.org/ru/docs/

user nginx;

worker_processes {{ ansible_processor_vcpus }};

error_log /var/log/nginx/error.log;

pid /run/nginx.pid;

Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.

[root@ansible templates]# ll

total 4

-rw-r–r–. 1 root root 2361 Jul 11 03:42 nginx.conf.j2

[root@ansible ansible]# cat nginx.yml


  • hosts: wsr

remote_user: root

tasks:

  • name: install nginx

yum: name=nginx

  • name: create nginx user

user: name=nginx shell=/sbin/nologin

  • name: copy cfg

template: src=templates/nginx.conf.j2 dest=/etc/nginx/nginx.conf

notify: restart nginx

  • name: start service nginx

service: name=nginx state=started

handlers:

  • name: restart nginx

service: name=nginx state=restarted

[root@ansible ansible]# ansible-playbook nginx.yml

PLAY [wsr] ******************************************************************************************

TASK [Gathering Facts] ******************************************************************************

ok: [192.168.100.20]

ok: [192.168.100.10]

TASK [install nginx] ********************************************************************************

ok: [192.168.100.10]

ok: [192.168.100.20]

TASK [create nginx user] ****************************************************************************

changed: [192.168.100.20]

changed: [192.168.100.10]

TASK [copy cfg] *************************************************************************************

ok: [192.168.100.20]

ok: [192.168.100.10]

TASK [start service nginx] **************************************************************************

changed: [192.168.100.10]

changed: [192.168.100.20]

PLAY RECAP ******************************************************************************************

192.168.100.10 : ok=5 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

192.168.100.20 : ok=5 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

因为我两台远程主机都是2个vcpu,所以显示的都是2。

在这里插入图片描述

如果启动nginx 的时候报错,可以创建nginx用户即可解决

八、条件判断when

=========================================================================

when 语句:在task中使用。Jinja2的语法格式

tasks:

  • name: install conf file to Centos7

template:src=files/nginxconf.c7.j2 dest=/etc/nginx/nginx.conf

when: ansible_distribution_major_version==”7”

  • name: install conf file to Centos6

template:src=files/nginxconf.c6.j2 dest=/etc/nginx/nginx.conf

when:ansible_distribution_major_version ==”6”

**以上语法表示若查询远程主机系统为centos6则执行,install conf file to Centos6。

若为cenos7则执行install conf file to Centos7。**

九、迭代with_items

==============================================================================

循环迭代,需要重复执行的任务;对迭代项引用,固定变量名为item,而后在task中使用with_items给定迭代的元素列表;

示例1:

字符串方式


  • name: install some package

yum:name={{ item }} state=present

with_items:

  • nginx

  • memecached

  • php-fpm

字典方式


  • name: add some groups

group: name={{ item }}

with_items:

  • group1

  • group2

  • group3

  • name: add some user

user: name={{ item.name }} group={{item.group}}

with_items:

  • {name: ‘user1’,group: ‘group1’}

  • {name: ‘user2’,group: ‘group2’}

  • {name: ‘user3’,group: ‘group3’}

在这里插入图片描述

在这里插入图片描述

十、检测playbook

===========================================================================

运行playbook,使用ansible-playbook命令

(1) 检测语法

ansible-playbook --syntax-check /path/to/playbook.yaml

**(2) 测试运行

ansible-playbook -C /path/to/playbook.yaml

–list-hosts # 列出主机

–list-tasks # 列出任务

–list-tags # 列出标签**

(3) 运行

ansible-playbook /path/to/playbook.yaml

-t TAGS, --tags=TAGS

–skip-tags=SKIP_TAGS

–start-at-task=START_AT

在执行playbook前,可以做些检查

检查palybook语法

ansible-playbook -i hosts httpd.yml --syntax-check

列出要执行的主机

ansible-playbook -i hosts httpd.yml --list-hosts

列出要执行的任务

ansible-playbook -i hosts httpd.yml --list-tasks

参考:

==================================================================

my.oschina.net/u/3413282/blog/876231]( )

https://www.cnblogs.com/keerya/p/8004566.html#_label1

https://www.bilibili.com/video/BV1HZ4y1p7Bf?from=search&seid=18094357415317710924

[

为了做好运维面试路上的助攻手,特整理了上百道 【运维技术栈面试题集锦】 ,让你面试不慌心不跳,高薪offer怀里抱!

这次整理的面试题,小到shell、MySQL,大到K8s等云原生技术栈,不仅适合运维新人入行面试需要,还适用于想提升进阶跳槽加薪的运维朋友。

本份面试集锦涵盖了

  • 174 道运维工程师面试题
  • 128道k8s面试题
  • 108道shell脚本面试题
  • 200道Linux面试题
  • 51道docker面试题
  • 35道Jenkis面试题
  • 78道MongoDB面试题
  • 17道ansible面试题
  • 60道dubbo面试题
  • 53道kafka面试
  • 18道mysql面试题
  • 40道nginx面试题
  • 77道redis面试题
  • 28道zookeeper

总计 1000+ 道面试题, 内容 又全含金量又高

  • 174道运维工程师面试题

1、什么是运维?

2、在工作中,运维人员经常需要跟运营人员打交道,请问运营人员是做什么工作的?

3、现在给你三百台服务器,你怎么对他们进行管理?

4、简述raid0 raid1raid5二种工作模式的工作原理及特点

5、LVS、Nginx、HAproxy有什么区别?工作中你怎么选择?

6、Squid、Varinsh和Nginx有什么区别,工作中你怎么选择?

7、Tomcat和Resin有什么区别,工作中你怎么选择?

8、什么是中间件?什么是jdk?

9、讲述一下Tomcat8005、8009、8080三个端口的含义?

10、什么叫CDN?

11、什么叫网站灰度发布?

12、简述DNS进行域名解析的过程?

13、RabbitMQ是什么东西?

14、讲一下Keepalived的工作原理?

15、讲述一下LVS三种模式的工作过程?

16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?

17、如何重置mysql root密码?

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

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

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

台服务器,你怎么对他们进行管理?

4、简述raid0 raid1raid5二种工作模式的工作原理及特点

5、LVS、Nginx、HAproxy有什么区别?工作中你怎么选择?

6、Squid、Varinsh和Nginx有什么区别,工作中你怎么选择?

7、Tomcat和Resin有什么区别,工作中你怎么选择?

8、什么是中间件?什么是jdk?

9、讲述一下Tomcat8005、8009、8080三个端口的含义?

10、什么叫CDN?

11、什么叫网站灰度发布?

12、简述DNS进行域名解析的过程?

13、RabbitMQ是什么东西?

14、讲一下Keepalived的工作原理?

15、讲述一下LVS三种模式的工作过程?

16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?

17、如何重置mysql root密码?

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

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

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

  • 28
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值