先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前在阿里
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合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
=================================================================================
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 标签内容。
=================================================================================
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.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 语句:在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。**
==============================================================================
循环迭代,需要重复执行的任务;对迭代项引用,固定变量名为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,使用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行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!