DevOps

ถาม & ตอบสำหรับวิศวกรซอฟต์แวร์ที่ทำงานเกี่ยวกับการทดสอบอัตโนมัติการส่งมอบอย่างต่อเนื่องการรวมบริการและการตรวจสอบและการสร้างโครงสร้างพื้นฐาน SDLC

3
วิธีการถอดรหัส Jenkins รหัสผ่านจาก credentials.xml?
ฉันได้เข้าร่วมโครงการที่หนังสือรับรองเจนกินส์จำนวนมากมีรหัสผ่านหรือสตริงข้อความรหัสผ่านที่ฉันต้องรู้เพื่อดำเนินการต่อกับโครงการโชคไม่ดีที่เอกสารเหล่านี้ไม่ได้ถูกบันทึกไว้ที่ใดเลย ฉันได้ตรวจสอบcredentials.xmlไฟล์ที่จัดเก็บข้อมูลรับรองเหล่านี้แล้ว แต่ไม่ได้เป็นข้อความธรรมดาเช่น: <passphrase>{AAAAAAAAAAAANzxft/rDzyt8mhxpn3O72dxvVqZksL5vBJ4jNKvAjAA=}</passphrase> หมายเหตุ: ฉันเปลี่ยนมันเล็กน้อยเพื่อความเป็นส่วนตัว ฉันจะถอดรหัสรหัสผ่านเดิมตามสตริงด้านบนได้อย่างไร

6
จะทดสอบการกำหนดค่า Terraform อย่างไร
หากคุณมีการกำหนดค่าTerraformที่มีความซับซ้อนในระดับปานกลางคุณจะเขียนการทดสอบเกี่ยวกับการกำหนดค่าที่สามารถดำเนินการโดยเป็นส่วนหนึ่งของขั้นตอนการรวมระบบต่อเนื่อง / การจัดส่งแบบต่อเนื่องได้อย่างไร ตัวอย่างเช่นคุณอาจมีการกำหนดค่าหลายคลาวด์ที่ระบุสถานะที่ต้องการต่อไปนี้: Azure Container Services เพื่อโฮสต์ Docker ใน Azure Azure Blob Storage SQL Azure บริการคอนเทนเนอร์ EC2 เพื่อโฮสต์ Docker ใน AWS บริการจัดเก็บ Amazon S3 ฐานข้อมูล Amazon RDS SQL Server อาจเป็นไปterraform applyได้ที่จะสร้างข้างต้นจากรอยขีดข่วนหรือการเปลี่ยนจากสถานะที่ใช้งานบางส่วนไปเป็นสถานะที่ต้องการข้างต้น ฉันทราบว่า Terraform แบ่งงานออกเป็นขั้นตอนการวางแผนการดำเนินการและขั้นตอนการสมัครซึ่งจริง ๆ แล้วทำการเปลี่ยนแปลงสถาปัตยกรรมเป้าหมาย สิ่งนี้สามารถใช้เพื่อเขียนการทดสอบเทียบกับแผนการดำเนินการได้หรือไม่หากมีกรอบในการช่วยเขียนสิ่งเหล่านี้

5
จะทดสอบการจัดเตรียมและการกำหนดค่าในการตั้งค่า Ansible ได้อย่างไร
ดูที่การพยายามสร้างความยืดหยุ่นในการตั้งค่า Ansible ของเราซึ่งเกี่ยวข้องกับการจัดสรรและการกำหนดค่า ฉันเข้าใจวิธีการทดสอบสองสามอย่างในด้านการกำหนดค่าของสิ่งต่าง ๆ แต่ฉันสงสัยว่าจะนำการทดสอบไปใช้ในด้านการจัดเตรียมสิ่งต่าง ๆ ได้อย่างไรและหากมีเครื่องมือใด ๆ ที่สามารถช่วยในการใช้งานประเภทนี้ ขณะนี้การทดสอบจำนวนมากของเราทำเสร็จแล้วในช่วง playbook ซึ่งทำให้รู้สึกเป็นอย่างมากสำหรับ "สิ่งที่จะเกิดขึ้น" มีบริการขึ้นมาคือ vip ที่มีให้ใช้งาน async นี้เสร็จแล้ว "แต่สิ่งที่เกี่ยวข้องกับฉันคือความสามารถในการจัดการ การกำหนดค่าที่ทั้งแอปพลิเคชันและชั้นการจัดเตรียม (เช่นการกำหนดค่า VM) ฉันรู้ว่า Ansible ไม่ใช่เครื่องมือที่ดีที่สุดสำหรับการทำงานกับการตั้งค่าดริฟท์ แต่ฉันอยากรู้อยากเห็นความคิดเห็นของคุณเอง หากคุณมีสิ่งที่จะทำให้กระบวนการอัตโนมัติดียิ่งขึ้น (เรามีสคริปต์ที่น่าเกลียดอยู่สองสามฉบับซึ่งรายงานกลับมาเป็นรายวัน) หมายเหตุ : ตอนนี้เรามีเงื่อนไขบางประการที่อาจเกิดการ reprovision ขึ้นมาใหม่ (เช่นการสร้างใหม่จากการสำรองข้อมูลปัญหาของระบบที่สำคัญ) แต่โดยทั่วไปแล้วมันจะวนซ้ำผ่านงานการกำหนดค่า ansible บางอย่างและไม่คิดอีกต่อไป

7
ทำไมฉันไม่ควรลองจ้าง 'DevOps Engineer'
แนวคิดของการมีวิศวกร DevOpsได้รับความนิยมค่อนข้างมากเมื่อเร็ว ๆ นี้และดูเหมือนว่าจะมีเพียงคนที่สามารถต่อเชื่อมและมอบสิทธิประโยชน์มากมายของ DevOps ดังที่อธิบายไว้ในบล็อก Puppet : องค์กรที่ใช้แนวทางปฏิบัติของ DevOps นั้นมีประสิทธิภาพสูง: พวกเขาปรับใช้โค้ดบ่อยกว่าคู่แข่งถึง 30 เท่าและการปรับใช้ล้มเหลวน้อยลง 50% ตามรายงานของ State of DevOps ประจำปี 2558 อย่างไรก็ตามฉันได้สังเกตเห็นว่ามีการคัดค้านเกี่ยวกับเสียงของนักพัฒนา DevOps มากและพยายามทำการปรับปรุงเหล่านี้: แม้จะมีข้อตกลงในวงกว้างเกี่ยวกับคุณลักษณะหลักของ DevOps แต่การโต้แย้งรอบคำว่า“ วิศวกร DevOps” บางคนพูดว่าคำนั้นขัดแย้งกับคุณค่าของ DevOps Jez Humble ผู้เขียนร่วมของการจัดส่งแบบต่อเนื่องชี้ให้เห็นว่าเพียงแค่เรียกวิศวกรของ DevOps ว่าสามารถสร้างไซโลแห่งที่สามได้นอกเหนือจาก dev และ ops - "... เห็นได้ชัดว่าเป็นวิธีที่ยาก (และแดกดัน) ในการพยายามแก้ไขปัญหาเหล่านี้ ." ทำไมมันอาจไม่เป็นเช่นความคิดที่ดีสำหรับธุรกิจที่จะจ้างวิศวกร DevOps และพยายาม 'ใช้ DevOps' …

3
DevOps เข้ากันได้กับ ITIL หรือไม่
ในอาชีพของฉันฉันเป็นทั้งนักพัฒนาซอฟต์แวร์และผู้ปฏิบัติงานITILในบทบาทการปฏิบัติงาน DevOps จึงเป็นความก้าวหน้าตามธรรมชาติของฉัน อย่างไรก็ตามฉันได้ต่อสู้กับภาษาที่มีความเชี่ยวชาญเป็นพิเศษที่ ITIL แนะนำและทำให้ "Developer Friendly" มากพอที่จะไม่ทำให้ผู้พัฒนาปิดตัวลงอย่างสมบูรณ์ ITIL เป็นกรอบการบริหารจัดการบริการด้านไอทีที่ได้รับการยอมรับในระดับสากลซึ่งได้รับการพัฒนามานานกว่า 30 ปีในฐานะชุดปฏิบัติที่ได้รับการพิสูจน์แล้วว่ามีประโยชน์ต่อความมั่นคงในการดำเนินงานและการเติบโตขององค์กร DevOps นั้นเข้ากันได้กับ ITIL จริงหรือเราจำเป็นต้องใช้จิตวิญญาณของ ITIL และ "แปล" เป็นภาษาที่ทีมพัฒนาเข้าใจดีขึ้น: การจัดการเหตุการณ์และปัญหา→ข้อบกพร่องการผลิตข้อบกพร่องหรือปัญหา การจัดการการเปลี่ยนแปลงและการวางจำหน่าย→การจัดส่งอย่างต่อเนื่อง การจัดการเหตุการณ์→การบันทึกการโทรมาตรการวัดและการแจ้งเตือน

2
อะไรคือกลยุทธ์ที่ดีในการทำให้เว็บไซต์ของฉันออนไลน์เมื่อ S3 ออฟไลน์
อะไรคือกลยุทธ์ที่ดีในการทำให้เว็บไซต์ของฉันออนไลน์เมื่อ S3 ออฟไลน์ หาก S3 US East 1 ออฟไลน์ฉันจะกำหนดค่าแอปของฉัน / กำหนดโครงสร้างเพื่อป้องกันไม่ให้ไซต์ทั้งหมดของฉันออฟไลน์ได้อย่างไร อะไรคือกลยุทธ์ที่ดีที่สุดในการกระจายความเสี่ยงในสถานการณ์เช่นนี้?

5
ดาวน์โหลด Docker Images จาก Docker Hub โดยไม่ต้องใช้ Docker
ฉันต้องการดาวน์โหลด Docker Image จากDocker Hubด้วยตนเอง โดยเฉพาะอย่างยิ่งฉันต้องการดาวน์โหลดภาพ Docker จาก Docker Hub บนเครื่องในสภาพแวดล้อมที่ จำกัด ซึ่งไม่มี (และไม่สามารถ) ติดตั้งซอฟต์แวร์ไคลเอ็นต์ Docker ได้ ฉันคิดว่าอาจเป็นไปได้ที่จะใช้API อย่างเป็นทางการแต่นี่ไม่ใช่กรณี - ดูการสนทนาต่อไปนี้: ดึงภาพนักเทียบท่าโดยไม่มีคำสั่งนักเทียบท่า เช่นกับ wget เป็นจริงหรือไม่ที่ API ไม่รองรับการดาวน์โหลดภาพ? มีวิธีแก้ไขไหม อัปเดต 1: ฉันเจอโพสต์ ServerFault ต่อไปนี้: กำลังดาวน์โหลดอิมเมจ docker สำหรับถ่ายโอนไปยังเครื่องที่ไม่ได้เชื่อมต่ออินเทอร์เน็ต โซลูชั่นที่ได้รับการยอมรับใช้docker saveคำสั่งซึ่งไม่ได้ช่วยในสถานการณ์ของฉัน แต่โซลูชันอื่นที่โพสต์มีอ้างอิงโพสต์ StackOverflow ต่อไปนี้: การดึงภาพนักเทียบท่า หนึ่งในวิธีแก้ปัญหานั้นอ้างถึงเครื่องมือบรรทัดคำสั่งที่เรียกว่าdocker-registry-debugซึ่งสามารถสร้างcurlคำสั่งสำหรับดาวน์โหลดรูปภาพได้ นี่คือสิ่งที่ฉันได้รับ: user@host:~$ docker-registry-debug curlme docker ubuntu # …
32 docker  dockerhub 

6
ฉันจะโน้มน้าวให้ผู้พัฒนาในทีมของฉันยอมรับ“ คุณสร้างมันขึ้นมาได้หรือไม่”
ฉันจะโน้มน้าวให้ผู้พัฒนาในทีมของฉันยอมรับว่า "คุณสร้างมันขึ้นมาได้หรือไม่" โดยที่ฉันมีคำพูดนี้จาก Werner Vogelsในใจ: การให้ความรับผิดชอบในการปฏิบัติงานของนักพัฒนาซอฟต์แวร์ได้ปรับปรุงคุณภาพของบริการอย่างมากทั้งจากลูกค้าและมุมมองด้านเทคโนโลยี รูปแบบดั้งเดิมคือคุณนำซอฟต์แวร์ของคุณไปที่กำแพงที่แยกการพัฒนาและการดำเนินงานและทิ้งมันแล้วลืมมันไป ไม่ได้อยู่ที่อเมซอน คุณสร้างมันคุณรันมัน สิ่งนี้ทำให้นักพัฒนาได้สัมผัสกับการทำงานประจำวันของซอฟต์แวร์ของพวกเขา นอกจากนี้ยังนำพวกเขาเข้ามาติดต่อกับลูกค้าแบบวันต่อวัน ห่วงข้อเสนอแนะของลูกค้านี้เป็นสิ่งจำเป็นสำหรับการปรับปรุงคุณภาพของบริการ ฉันกำลังคิดถึงชุดนักพัฒนาซอฟต์แวร์ที่: ได้รับการว่าจ้างให้เป็นนักพัฒนาบทบาทโดยไม่มีการกล่าวถึงงานที่เกี่ยวข้องกับ ops ตามเนื้อผ้ามี "โยนรหัสข้ามกำแพง" ให้กับทีม ops ตามเนื้อผ้ามีตารางการทำงาน 9-5 และเป็นปฏิปักษ์ต่อความคิดของ "หน้าที่วิทยุติดตามตัว" การมีส่วนร่วมในการกู้คืนความเสียหายการเขียนโพสต์ชันสูตร ฯลฯโดยเฉพาะนอกเวลาทำการปกติ (หมายเหตุ: ฉันมีปัญหาที่เกิดขึ้นไม่บ่อยนักในเรื่องนี้เท่านั้นฉันไม่ได้เสนอให้เราเพิ่มการสนับสนุนลูกค้านอกเวลางานให้กับปริมาณงานของทีมนี้) ปัจจุบันไม่รับผิดชอบในการเขียน / สนับสนุนการตรวจสอบหรือการแจ้งเตือนเกี่ยวกับการใช้งานของพวกเขา สมมติว่ามีทีมงานที่กำลังพัฒนาบริการไมโครคลาวด์ใหม่อย่างรวดเร็วด้วยโปรไฟล์ที่จะเป็นเช่นนั้นการส่งมอบบริการเหล่านี้ให้กับทีม ops นั้นดีที่สุดเนื่องจากไม่สามารถติดตามความรู้เชิงลึกของ บริการที่จำเป็นในการจัดการและตรวจสอบอย่างมีประสิทธิภาพ "คุณสร้างมันคุณรันมัน" จะทำงานได้ดีขึ้นสำหรับทีมนี้เพราะงานสามารถมอบหมายให้สมาชิกในทีมที่รับผิดชอบแต่ละคน ดังนั้นทีมนี้จะเริ่มมีส่วนร่วมในการออกแบบโครงสร้างพื้นฐานตรวจสอบ / แจ้งเตือนเครื่องมือสำหรับการให้บริการและ (ไม่บ่อยนัก) ตอบสนองต่อเหตุการณ์ที่เกิดขึ้นดับ ฉันสนใจวิธีการเป็นพิเศษโดยได้รับการสนับสนุนจากตัวอย่างในโลกแห่งความเป็นจริง วิธีการนี้ถูกนำไปใช้อย่างประสบความสำเร็จในสถานที่ทำงานอื่น ๆ และหากมีขั้นตอนที่เป็นที่ยอมรับในการปฏิบัติตามในขณะนี้ ลิงก์ใด ๆ เพื่อเขียนบทความที่สามารถรองรับคำตอบจะมีประโยชน์มาก
29 culture 


3
Chaos Monkey ตัวนี้คือใครและทำไมเขาถึงชนเซิร์ฟเวอร์ของฉัน
ฉันมีเซิร์ฟเวอร์ที่สมบูรณ์แบบมันสวยและน่าทึ่งมากฉันจึงตั้งชื่อมันว่า Petra มันสมบูรณ์แบบในทุกด้านทุกอย่างได้รับการปรับแต่งและปรับแต่งอย่างถูกต้องมันมีบันทึกการบริการที่สมบูรณ์แบบ 100% และเวลาทำงาน 753 วัน ฉันใช้เวลาและความพยายามมากเพื่อให้แน่ใจว่ามันทำงานได้ดี ไม่มีเซิร์ฟเวอร์ตัวอื่นใน บริษัท ที่ดีขนาดนี้ แต่เมื่อคืนนี้อสูรตัวร้ายตัวนี้ตกที่เซิร์ฟเวอร์ของฉันโดยไม่มีเหตุผล แน่นอนว่าฉันได้รับแจ้งเวลาตี 2 และฉันต้องใช้เวลาจนถึงเช้าเพื่อให้มันทำงานและทุกอย่างได้รับการกำหนดค่าและปรับจูน แต่ฉันกลัวว่ามันจะไม่ดีเท่าที่เคยมีมา อาจใช้เวลาหลายสัปดาห์ก่อนที่จะกลับไปสู่ความรุ่งเรืองในอดีต ตอนนี้สถานะการออนไลน์ของฉันหมดไปแล้วฉันไม่มีแม้แต่สามเก้าชั่วคนและใครจะรู้ว่าสิ่งนี้จะทำให้ชื่อเสียงของฉันดีขึ้นได้อย่างไร ลิงโกลาหลคนนี้คือใครและทำไมเขาถึงทำอย่างนั้นกับเซิร์ฟเวอร์ของฉันและทำไมเขาถึงพยายามทำลายฉัน

3
ทำความเข้าใจกับเลเยอร์นักเทียบท่า
เรามีบล็อกต่อไปนี้ในของเราDockerfile: RUN yum -y update RUN yum -y install epel-release RUN yum -y groupinstall "Development Tools" RUN yum -y install python-pip git mysql-devel libxml2-devel libxslt-devel python-devel openldap-devel libffi-devel openssl-devel ฉันได้รับแจ้งว่าเราควรรวมRUNคำสั่งเหล่านี้เพื่อลดเลเยอร์นักเทียบท่าที่สร้างขึ้น: RUN yum -y update \ && yum -y install epel-release \ && yum -y groupinstall "Development Tools" \ && yum …

5
จะหลีกเลี่ยงไดอะล็อกโต้ตอบเมื่อใช้งาน "apt-get upgrade -y" ใน Ubuntu 16.04 เมื่อทำการบรรจุด้วย Packer ได้อย่างไร?
ฉันใช้Packerเพื่อสร้าง AWS AMI จากอิมเมจ Ubuntu 16.04 ในการเริ่มต้นฉันทำการอัพเกรด: sudo apt-get update sudo apt-get upgrade -y นี่คือส่วนที่เกี่ยวข้องของส่วนผู้จัดหาของฉัน: "provisioners": [ { "type": "shell", "inline": [ "sudo apt-get update", "sudo apt-get upgrade -y" ] } ] สิ่งนี้จะทำลายการทำให้เป็นอัตโนมัติอย่างไรก็ตามเมื่อไดอะล็อกโต้ตอบปรากฏขึ้น: amazon-ebs: Found kernel: /boot/vmlinuz-4.4.0-72-generic amazon-ebs: A new version of /boot/grub/menu.lst is available, but the version installed amazon-ebs: …

4
เหตุใดราคาพิเศษของ AWS EC2 จึงสูงกว่าราคาตามความต้องการ
ฉันพยายามจัดสรรอินสแตนซ์ของ Spot ผ่าน Ansible เมื่อวานนี้และคำขอเกือบทั้งหมดของฉันล้มเหลวแม้ว่าฉันจะวางราคา spot == ราคาตามความต้องการของอินสแตนซ์นั้น ดังนั้นเมื่อฉันดูกราฟราคาสปอตฉันพบสิ่งที่น่าสนใจมาก: ราคาสปอตของอินสแตนซ์ในเราตะวันออก -1a เป็นมากกว่าราคาตามความต้องการซึ่งทำให้ฉันสับสน [ในความเป็นจริง ~ 5 เท่าสูงกว่า] อินสแตนซ์แบบ Spot ไม่เหมาะสำหรับต้นทุนต่ำใช่ไหม ถ้าใช่แล้วทำไมราคาถึงสูงกว่าราคาตามความต้องการ? ตามเอกสารของ AWS : อินสแตนซ์แบบ Spot ให้คุณเข้าถึงความสามารถของ Amazon EC2 ที่ไม่ได้ใช้พร้อมส่วนลดที่สูงชันเมื่อเทียบกับราคาตามความต้องการ นอกจากนี้ยังหมายความว่าผู้คนกำลังประมูลราคาตามความต้องการใช่ไหม ถ้าใช่แล้วทำไมล่ะ พวกเขาไม่ได้ดีกว่าด้วยอินสแตนซ์ตามต้องการหรือไม่ หรือฉันเข้าใจแนวคิดของอินสแตนซ์จุดที่ผิดหรือเปล่า?

4
วิธีการปรับขนาดเจนกินส์อย่างถูกต้อง?
ในโครงการของฉันเรามีเซิร์ฟเวอร์ AWS หนึ่งเครื่องที่ใช้ Jenkins Master + 1 Jenkins slave (ผู้ปฏิบัติการ 2 คน) ... และเราต้องการมากขึ้น เพื่อเพิ่มพลังการสร้างของเราเรามีสามตัวเลือก: ขยายขนาด : ทำให้อินสแตนซ์ AWS ใหญ่ขึ้นและเพิ่มตัวจัดการเพิ่มเติม ขยายขนาด : ทำให้ AWS อินสแตนซ์ใหญ่ขึ้นและเพิ่มอีกกระบวนการทาสเจนกินส์ ลดขนาด : สร้างอินสแตนซ์ AWS ใหม่ด้วยทาสเจนกินส์และเชื่อมต่อกับต้นแบบ เราต้องการทำ 2. เนื่องจากเราอยู่ในองค์กรขนาดใหญ่และอาจารย์ Jenkins ปัจจุบันของเราสามารถเข้าถึงทุกที่ที่เขาต้องการ ตัวเลือกที่ 3 "เซิร์ฟเวอร์ใหม่" มีความซับซ้อนเนื่องจากต้องได้รับการอนุมัติจากทางราชการมากขึ้นซึ่งจะใช้เวลาหลายสัปดาห์ ดังนั้นคำถามของฉันคือ: มีปัญหาทางเทคนิคในตัวเลือก 2 หรือไม่? . บางทีผู้บริหารของทาสเจนกินส์แต่ละคนอาจไม่รู้จักผู้คุมทาสคนอื่น ๆ ? โดยทั่วไปแล้ววิธีที่ดีที่สุดในการเพิ่มขนาด Jenkins คืออะไร …

2
คุณจะคำนวณข้อตกลงระดับบริการ (SLA) สำหรับบริการคลาวด์ได้อย่างไร
บริการคลาวด์ที่โฮสต์โดยAmazon Web Services , Azure , Googleและอื่น ๆ ส่วนใหญ่เผยแพร่S ervice L evel A greementหรือ SLA สำหรับบริการส่วนบุคคลที่พวกเขาให้บริการ สถาปนิกวิศวกรแพลตฟอร์มและนักพัฒนามีหน้าที่รับผิดชอบในการรวมเข้าด้วยกันเพื่อสร้างสถาปัตยกรรมที่ให้บริการโฮสต์สำหรับแอปพลิเคชัน เมื่อแยกกันบริการเหล่านี้มักจะให้บริการในช่วงสามถึงสี่ของความพร้อมใช้งาน: Azure Traffic Manager: 99.99% หรือ 'สี่เก้า' SQL Azure: 99.99% หรือ 'สี่เก้า' บริการแอป Azure: 99.95% หรือ 'สามเก้าห้า' อย่างไรก็ตามเมื่อรวมเข้าด้วยกันในสถาปัตยกรรมมีความเป็นไปได้ที่องค์ประกอบใดส่วนประกอบหนึ่งอาจได้รับผลกระทบจากเหตุขัดข้องทำให้มีความพร้อมโดยรวมที่ไม่เท่ากับบริการส่วนประกอบ ความพร้อมในการผสมอนุกรม ในตัวอย่างนี้มีสามโหมดความล้มเหลวที่เป็นไปได้: SQL Azure ไม่ทำงาน บริการแอพหยุดทำงาน ทั้งสองลง ดังนั้นความพร้อมโดยรวมของ "ระบบ" นี้จะต้องต่ำกว่า 99.95% เหตุผลของฉันสำหรับการคิดนี่คือถ้า SLA สำหรับบริการทั้งสองคือ: บริการนี้จะให้บริการ …

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.