chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

利用Ansible自動化部署Linux服務器

馬哥Linux運維 ? 來源:馬哥Linux運維 ? 2025-08-06 17:59 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Ansible自動化部署Linux服務器配置管理最佳實踐

一鍵部署數(shù)百臺服務器?5分鐘完成環(huán)境配置?這不是夢想,這是Ansible的日常操作!

作為一名在運維一線摸爬滾打多年的工程師,我見過太多因為手工配置導致的生產(chǎn)事故。今天,我將毫無保留地分享我在大規(guī)模Linux服務器自動化管理中積累的實戰(zhàn)經(jīng)驗,讓你也能輕松駕馭數(shù)百臺服務器的配置管理。

為什么選擇Ansible?

在DevOps工具鏈中,Ansible憑借其無代理架構聲明式配置脫穎而出。相比Chef、Puppet等工具,Ansible的學習曲線更平緩,但功能卻毫不遜色。

核心優(yōu)勢一覽

?零依賴部署:目標服務器只需SSH和Python

?冪等性保證:重復執(zhí)行結果一致,安全可靠

?YAML語法:人類可讀,易于維護和協(xié)作

?模塊化設計:2000+內(nèi)置模塊,覆蓋99%運維場景

企業(yè)級目錄結構設計

一個清晰的項目結構是成功的一半。經(jīng)過多個大型項目驗證,我推薦這樣的目錄布局:

ansible-infra/
├── inventories/
│  ├── production/
│  │  ├── hosts.yml
│  │  └── group_vars/
│  └── staging/
│    ├── hosts.yml
│    └── group_vars/
├── roles/
│  ├── common/
│  ├── webserver/
│  ├── database/
│  └── monitoring/
├── playbooks/
│  ├── site.yml
│  ├── webservers.yml
│  └── databases.yml
├── ansible.cfg
└── vault/
  └── secrets.yml

核心配置文件優(yōu)化

ansible.cfg 性能調(diào)優(yōu)

[defaults]
# 提升并發(fā)性能
forks=50
host_key_checking=False
# 開啟連接復用
[ssh_connection]
ssh_args= -o ControlMaster=auto -o ControlPersist=60s
pipelining=True
# 加速fact收集
gathering= smart
fact_caching= jsonfile
fact_caching_connection= /tmp/ansible_facts_cache

主機清單智能分組

# inventories/production/hosts.yml
all:
children:
 webservers:
  hosts:
   web[01:10].example.com:
  vars:
   nginx_worker_processes:4
   app_env:production
 databases:
  hosts:
   db[01:03].example.com:
  vars:
   mysql_max_connections:500
 monitoring:
  hosts:
   monitor.example.com:

角色開發(fā)黃金法則

1. 通用系統(tǒng)配置角色

# roles/common/tasks/main.yml
---
-name:更新系統(tǒng)包
package:
 name:'*'
 state:latest
when:ansible_os_family=="RedHat"

-name:配置系統(tǒng)時區(qū)
timezone:
 name:"{{ system_timezone | default('Asia/Shanghai') }}"

-name:優(yōu)化系統(tǒng)內(nèi)核參數(shù)
sysctl:
 name:"{{ item.key }}"
 value:"{{ item.value }}"
 state:present
 reload:yes
loop:
 -{key:'net.core.somaxconn',value:'65535'}
 -{key:'net.ipv4.tcp_max_syn_backlog',value:'65535'}
 -{key:'vm.swappiness',value:'10'}

2. Web服務器角色進階配置

# roles/webserver/tasks/main.yml
---
-name:安裝Nginx
package:
 name:nginx
 state:present

-name:生成Nginx配置文件
template:
 src:nginx.conf.j2
 dest:/etc/nginx/nginx.conf
 backup:yes
notify:重啟nginx服務

-name:配置虛擬主機
template:
 src:vhost.conf.j2
 dest:"/etc/nginx/conf.d/{{ item.name }}.conf"
loop:"{{ virtual_hosts }}"
notify:重載nginx配置

-name:確保Nginx服務啟動
systemd:
 name:nginx
 state:started
 enabled:yes

3. 高可用數(shù)據(jù)庫集群配置

# roles/database/tasks/mysql_cluster.yml
---
-name:安裝MySQL8.0
package:
 name:
  -mysql-server
  -mysql-client
  -python3-pymysql
 state:present

-name:配置MySQL主從復制
template:
 src:my.cnf.j2
 dest:/etc/mysql/my.cnf
vars:
 server_id:"{{ ansible_default_ipv4.address.split('.')[-1] }}"
notify:重啟mysql服務

-name:創(chuàng)建復制用戶
mysql_user:
 name:replication
 password:"{{ mysql_replication_password }}"
 priv:"*.*:REPLICATION SLAVE"
 host:"%"
when:mysql_role=="master"

安全配置最佳實踐

Ansible Vault 敏感信息管理

# 創(chuàng)建加密文件
ansible-vault create vault/secrets.yml

# 編輯加密文件
ansible-vault edit vault/secrets.yml

# 在playbook中使用
ansible-playbook -i inventories/production playbooks/site.yml --ask-vault-pass

SSH密鑰自動化分發(fā)

-name:分發(fā)SSH公鑰
authorized_key:
 user:"{{ ansible_user }}"
 state:present
 key:"{{ item }}"
loop:"{{ admin_ssh_keys }}"

-name:禁用密碼登錄
lineinfile:
 path:/etc/ssh/sshd_config
 regexp:'^PasswordAuthentication'
 line:'PasswordAuthentication no'
notify:重啟ssh服務

監(jiān)控與日志集成

自動化部署ELK Stack

# roles/monitoring/tasks/elk.yml
---
-name:安裝Elasticsearch
package:
 name:elasticsearch
 state:present

-name:配置Elasticsearch集群
template:
 src:elasticsearch.yml.j2
 dest:/etc/elasticsearch/elasticsearch.yml
vars:
 cluster_name:"{{ elk_cluster_name }}"
 node_name:"{{ inventory_hostname }}"
 network_host:"{{ ansible_default_ipv4.address }}"

-name:部署Logstash配置
template:
 src:logstash.conf.j2
 dest:/etc/logstash/conf.d/main.conf
notify:重啟logstash服務

性能優(yōu)化與故障排查

并行執(zhí)行策略

# playbooks/高性能部署.yml
---
-hosts:webservers
strategy:free# 異步執(zhí)行,提升速度
serial:5   # 分批執(zhí)行,控制風險
max_fail_percentage:20# 容錯率設置
tasks:
 -name:更新應用代碼
  git:
   repo:"{{ app_repo_url }}"
   dest:/var/www/html
   version:"{{ app_version }}"

調(diào)試與日志記錄

-name:調(diào)試變量輸出
debug:
 var:ansible_facts
when:debug_mode|default(false)

-name:記錄操作日志
lineinfile:
 path:/var/log/ansible-deploy.log
 line:"{{ ansible_date_time.iso8601 }}-{{ inventory_hostname }}-{{ ansible_play_name }}"
 create:yes

CI/CD集成實戰(zhàn)

GitLab CI 自動化流水線

# .gitlab-ci.yml
stages:
-validate
-deploy_staging
-deploy_production

validate_ansible:
stage:validate
script:
 -ansible-lintplaybooks/
 -ansible-playbook--syntax-checkplaybooks/site.yml

deploy_staging:
stage:deploy_staging
script:
 -ansible-playbook-iinventories/stagingplaybooks/site.yml
only:
 -develop

deploy_production:
stage:deploy_production
script:
 -ansible-playbook-iinventories/productionplaybooks/site.yml
only:
 -master
when:manual

高級技巧揭秘

動態(tài)Inventory

#!/usr/bin/env python3
# scripts/dynamic_inventory.py
importjson
importrequests

defget_aws_instances():
 # 從AWS API獲取實例信息
  instances = requests.get('your-aws-api-endpoint').json()
  inventory = {'webservers': {'hosts': []}}
 
 forinstanceininstances:
   ifinstance['tags'].get('Role') =='web':
      inventory['webservers']['hosts'].append(instance['public_ip'])
 
 returninventory

if__name__ =='__main__':
 print(json.dumps(get_aws_instances()))

自定義模塊開發(fā)

# library/check_service_health.py
#!/usr/bin/python
fromansible.module_utils.basicimportAnsibleModule
importrequests

defmain():
  module = AnsibleModule(
    argument_spec=dict(
      url=dict(required=True),
      timeout=dict(default=10,type='int')
    )
  )
 
 try:
    response = requests.get(module.params['url'],
               timeout=module.params['timeout'])
   ifresponse.status_code ==200:
      module.exit_json(changed=False, status='healthy')
   else:
      module.fail_json(msg=f"Service unhealthy:{response.status_code}")
 exceptExceptionase:
    module.fail_json(msg=str(e))

if__name__ =='__main__':
  main()

生產(chǎn)環(huán)境實戰(zhàn)經(jīng)驗

藍綠部署策略

-name:藍綠部署實現(xiàn)
block:
 -name:準備綠色環(huán)境
  include_tasks:deploy_green.yml
  
 -name:健康檢查
  uri:
   url:"http://{{ ansible_host }}:{{ green_port }}/health"
   method:GET
  register:health_check
  
 -name:切換流量到綠色環(huán)境
  replace:
   path:/etc/nginx/upstream.conf
   regexp:'server.*:{{ blue_port }}'
   replace:'server {{ ansible_host }}:{{ green_port }}'
  when:health_check.status==200
  notify:重載nginx配置
  
rescue:
 -name:回滾到藍色環(huán)境
  debug:
   msg:"部署失敗,保持藍色環(huán)境運行"

大規(guī)模服務器管理技巧

# 分批重啟策略
-name:滾動重啟服務器
shell:reboot
async:1
poll:0
throttle:1# 每次只重啟一臺

-name:等待服務器恢復
wait_for_connection:
 delay:30
 timeout:300

性能基準測試

在我的實際項目中,使用Ansible實現(xiàn)了以下性能提升:

指標 手工操作 Ansible自動化 提升幅度
100臺服務器配置時間 8小時 20分鐘 24倍
配置錯誤率 15% <1% 降低93%
部署一致性 60% 99.9% 提升66%

總結與展望

通過這套完整的Ansible最佳實踐,你可以:

10倍提升運維效率
顯著降低人為錯誤
實現(xiàn)真正的Infrastructure as Code
輕松管理數(shù)千臺服務器

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    88

    文章

    11576

    瀏覽量

    216828
  • 服務器
    +關注

    關注

    13

    文章

    10003

    瀏覽量

    90195

原文標題:Ansible自動化部署Linux服務器配置管理最佳實踐

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    基于spring boot的linux服務器部署方法

    最近一直在研究springboot服務器,之前受到springmvc等框架的困擾,思路不對,一直想把springboot打包成war包然后部署到tomcat容器下,今天突然想到既然springboot我再本地可以使用jar包的形式訪問,
    發(fā)表于 07-22 06:51

    ntp校時(網(wǎng)絡對時服務器自動化系統(tǒng)技術應用方案分享

    ntp校時(網(wǎng)絡對時服務器自動化系統(tǒng)技術應用方案ntp校時(網(wǎng)絡對時服務器自動化系統(tǒng)技術
    發(fā)表于 07-02 08:12

    Jenkins遠程部署Linux服務器的過程

    1、Jenkins遠程部署Linux服務器  之前在Jenkins上也有一些使用經(jīng)驗了,但是都是使用團隊配置好的Jenkins,自己只需要管自己的項目以及執(zhí)行構建即可,這一次自己嘗試了一下配置
    發(fā)表于 11-18 18:12

    智能通信服務器在變電站自動化系統(tǒng)中應用

    介紹了基于嵌入式Linux 系統(tǒng)和Intel Xscale 網(wǎng)絡處理的Moxa 智能通信服務器在煤礦井下6 kV 變電站自動化系統(tǒng)接入煤礦自動化
    發(fā)表于 04-24 10:00 ?18次下載

    ansible-first-book 自動化運維工具

    ansible-first-book 自動化運維工具
    發(fā)表于 09-08 09:31 ?5次下載

    利用Ansible實現(xiàn)OpenStack自動化

    方法行之有效。 簡介本文介紹為何Ansible Tower是使用playbook,在OpenStack中創(chuàng)建、部署和配置虛擬機最簡單的方法之一。系統(tǒng)性能、IT自動化、復雜系統(tǒng)的部署
    的頭像 發(fā)表于 12-03 17:29 ?3747次閱讀
    <b class='flag-5'>利用</b><b class='flag-5'>Ansible</b>實現(xiàn)OpenStack<b class='flag-5'>自動化</b>

    利用Ansible實現(xiàn)OpenStack自動化

    本文介紹為何Ansible Tower是使用playbook,在OpenStack中創(chuàng)建、部署和配置虛擬機最簡單的方法之一。系統(tǒng)性能、IT自動化、復雜系統(tǒng)的部署和快速生產(chǎn)力是軟件開發(fā)中
    的頭像 發(fā)表于 12-02 19:02 ?3770次閱讀

    使用Ansible的OpenStack自動化

    通過將 Ansible Tower 與 OpenStack 集成到 Cyber Range 軟件中,我們能夠構建一個應用程序,為全球客戶提供按需培訓和真實場景。將 Ansible REST API 與行動手冊集成,極大地利用了配
    的頭像 發(fā)表于 12-21 14:12 ?1630次閱讀
    使用<b class='flag-5'>Ansible</b>的OpenStack<b class='flag-5'>自動化</b>

    什么是Ansible

    Ansible是一種運維自動化工具軟件,用來批量配置服務器或網(wǎng)絡設備(目標主機)。
    的頭像 發(fā)表于 02-15 14:06 ?2157次閱讀

    使用Ansible構建虛擬機部署Linux的最佳實踐

    編者按:本文節(jié)選自節(jié)選自《基于Linux的企業(yè)自動化》第五章?!暗?章,使用Ansible構建用于部署的虛擬機模板,通過構建虛擬機模板來探索部署
    的頭像 發(fā)表于 05-16 15:13 ?1612次閱讀

    利用Ansible批量100臺服務器添加Crontab

    今天浩道跟大家分享關于Ansible自動化運維相關硬核干貨,利用Ansible批量100臺服務器添加Crontab !
    的頭像 發(fā)表于 08-19 14:24 ?1062次閱讀

    基于 Docker 與 Jenkins 實現(xiàn)自動化部署

    前言 重塑自動化部署新高度,Docker 攜手 Jenkins,在華為云 Flexus X 云服務器的加持下,引領持續(xù)集成與部署的新紀元。Flexus X 以其卓越的性能、靈活的資源配
    的頭像 發(fā)表于 01-07 17:25 ?731次閱讀
    基于 Docker 與 Jenkins 實現(xiàn)<b class='flag-5'>自動化</b><b class='flag-5'>部署</b>

    IT自動化工具Ansible基礎入門

    Ansible是幫助運維人員實現(xiàn)自動化的最重要的工具之一。
    的頭像 發(fā)表于 02-07 10:00 ?1176次閱讀
    IT<b class='flag-5'>自動化</b>工具<b class='flag-5'>Ansible</b>基礎入門

    Ansible Playbook自動化部署Nginx集群指南

    面對日益猖獗的DDoS攻擊,手動部署防護已經(jīng)out了!今天教你用Ansible一鍵部署具備DDoS防御能力的Nginx集群,讓攻擊者哭著回家!
    的頭像 發(fā)表于 08-06 17:54 ?549次閱讀

    使用Ansible實現(xiàn)大規(guī)模集群自動化部署

    當你面對1000+服務器需要部署時,你還在一臺臺手工操作嗎?本文將揭秘如何用Ansible實現(xiàn)大規(guī)模集群的自動化部署,讓運維效率提升10倍!
    的頭像 發(fā)表于 08-27 14:41 ?410次閱讀