inflearn logo
็Ÿฅ่ญ˜ๅ…ฑๆœ‰
inflearn logo

Jenkinsใ‚’ๅˆฉ็”จใ—ใŸCI/CDใƒ‘ใ‚คใƒ—ใƒฉใ‚คใƒณใฎๆง‹็ฏ‰

ๆœฌ่ฌ›็พฉใฏใ€ใ‚ฏใƒฉใ‚ฆใƒ‰ใƒใ‚คใƒ†ใ‚ฃใƒ–ใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใ‚’ๆง‹ๆˆใ™ใ‚‹4ใคใฎๆ ธๅฟƒ่ฆ็ด (MSAใ€CI/CDใ€DevOpsใ€Container)ใฎไธ€ใคใงใ‚ใ‚‹CI(Continuous Integrationใ€็ถ™็ถš็š„ใ‚คใƒณใƒ†ใ‚ฐใƒฌใƒผใ‚ทใƒงใƒณ)ใจCD(Continuous Deploymentใ€็ถ™็ถš็š„ใƒ‡ใƒ—ใƒญใ‚คใƒกใƒณใƒˆ)ใƒ‘ใ‚คใƒ—ใƒฉใ‚คใƒณใซใคใ„ใฆๆ‰ฑใ†่ฌ›็พฉใงใ™ใ€‚ๆœฌ่ฌ›็พฉใ‚’้€šใ˜ใฆใ€CI/CDใƒ„ใƒผใƒซใงใ‚ใ‚‹Jenkinsใ‚’ๅˆฉ็”จใ—ใฆใƒญใƒผใ‚ซใƒซ็’ฐๅขƒใจใ‚ฏใƒฉใ‚ฆใƒ‰็’ฐๅขƒใซ่‡ชๅˆ†ใ ใ‘ใฎ่‡ชๅ‹•ๅŒ–ใƒ‘ใ‚คใƒ—ใƒฉใ‚คใƒณใ‚’ๆง‹็ฏ‰ใ—ใ€ใƒ‡ใƒ—ใƒญใ‚คใ™ใ‚‹ใŸใ‚ใซๅฟ…่ฆใชใƒ—ใƒญใ‚ปใ‚นใ‚’็†่งฃใ—ใ€ๅฎŸ็ฟ’ใ™ใ‚‹ใ“ใจใŒใงใใพใ™ใ€‚

้›ฃๆ˜“ๅบฆ ๅˆ็ดš

ๅ—่ฌ›ๆœŸ้–“ ็„กๅˆถ้™

Jenkins
Jenkins
CI/CD
CI/CD
Ansible
Ansible
Kubernetes
Kubernetes
SonarQube
SonarQube
Jenkins
Jenkins
CI/CD
CI/CD
Ansible
Ansible
Kubernetes
Kubernetes
SonarQube
SonarQube

ใŠ็Ÿฅใ‚‰ใ›

5 ไปถ

  • kenneth๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€

    ใ“ใ‚“ใซใกใฏใ€้›ขๅณถ้™ขใงใ™ใ€‚

    ใ€ŒJenkinsใ‚’ไฝฟ็”จใ—ใŸCI/CD Pipelineใฎๆง‹็ฏ‰ใ€่ฌ›็พฉใจใ€ŒDevOpsใฎใŸใ‚ใฎDockerไปฎๆƒณๅŒ–ๆŠ€่ก“๏ผˆPrivate Harbor Registry๏ผ‰ใ€่ฌ›็พฉใงใฏใ€ๆ‰€ๆœ›ใฎDockerใ‚ณใƒณใƒ†ใƒŠๅฎŸ่กŒใฎใŸใ‚ใซDinD๏ผˆDocker in Docker๏ผ‰ๆ–นๅผใงๅฎŸ่ทต็’ฐๅขƒใ‚’ๆง‹็ฏ‰ใ—ใ€ไพ‹ใ‚’ๅฎŸ่กŒใ—ใฆใ„ใพใ™ใ€‚

    ใŸใ ใ—ใ€WindowsใจMacOS็’ฐๅขƒใŒใใ‚Œใžใ‚Œ็•ฐใชใ‚Šใ€MacOSใฎๅ ดๅˆใ€Intel chipใ€Apple chipใซใ‚ˆใฃใฆ่จญๅฎšใ—ใชใ‘ใ‚Œใฐใชใ‚‰ใชใ„ใƒ‰ใƒƒใ‚ซใƒผใ‚คใƒกใƒผใ‚ธใŒ็•ฐใชใ‚Šใพใ™ใ€‚ใ“ใฎ็”ปๅƒใงใฏใ€SSHใ‚ตใƒผใƒใƒผใจDockerใ‚จใƒณใ‚ธใƒณใŒใ‚คใƒณใ‚นใƒˆใƒผใƒซใ•ใ‚Œใฆใ„ใ‚‹ใ‚ˆใ†ใซๆง‹ๆˆใ—ใ€ๅฎŸ็ฟ’ใฎ้š›ใ€่ค‡ๆ•ฐใฎใƒ‰ใƒƒใ‚ซใƒผใ‚ณใƒณใƒ†ใƒŠใŒๅฟ…่ฆใชๅ ดๅˆใซไฝฟใ„ใ‚„ใ™ใใ™ใ‚‹ใ‚ˆใ†ใซๆง‹ๆˆใ—ใŸใŒใ€ๅ—่ฌ›็”Ÿใฎๆ–นใ€…ใฎ็’ฐๅขƒใซๅˆใ‚ใ›ใฆ่ฃฝไฝœใ™ใ‚‹ใซใฏ็„ก็†ใŒใ‚ใ‚‹ใฎใ‚‚ไบ‹ๅฎŸใงใ™ใ€‚ใใ‚Œใงใ‚‚ใ€ใงใใ‚‹ใ ใ‘ไธ€่ˆฌ็š„ใช็’ฐๅขƒใงใฏ็„ก็†ใชใๅฎŸ็ฟ’ใงใใ‚‹ใ‚ˆใ†ใซใƒ‰ใƒƒใ‚ซใƒผใ‚คใƒกใƒผใ‚ธใ‚’ๆ›ดๆ–ฐใ—ใ‚ˆใ†ใจใ—ใฆใ„ใพใ™ใ€‚

    ๆœ€่ฟ‘ใ€MacOS Apple chip ใงไฝฟ็”จใ™ใ‚‹ docker-server:m1 ใ‚คใƒกใƒผใ‚ธใ‚’ๅˆฉ็”จใ—ใฆใ€ๅฎŸ็ฟ’ๆ™‚ใ€ไธ‹่จ˜ใฎใ‚จใƒฉใƒผใชใฉใงๅฎŸ็ฟ’ใงใใชใ„ใ‚จใƒฉใƒผใŒ็ขบ่ชใ•ใ‚Œใพใ—ใŸใ€‚

     exec /docker-entrypoint.sh: invalid argument

    ่ค‡ๆ•ฐใฎใƒ‘ใ‚นใง็ขบ่ชใ—ใฆไฟฎๆญฃใ‚‚ใ—ใฆใฟใพใ—ใŸใŒใ€MacOS Apple chipใงไฝฟ็”จใ™ใ‚‹arm64ใ‚ขใƒผใ‚ญใƒ†ใ‚ฏใƒใƒฃใซDockerใ‚ณใƒณใƒ†ใƒŠใซใƒ‰ใƒƒใ‚ซใƒผใ‚จใƒณใ‚ธใƒณใ‚’ใ‚คใƒณใ‚นใƒˆใƒผใƒซใ—ใฆไฝฟ็”จใ™ใ‚‹DinDๆ–นๅผใงใ‚จใƒฉใƒผใŒ็™บ็”Ÿใ™ใ‚‹ใ‚ˆใ†ใงใ™ใ€‚ ๏ผˆใ‚จใƒฉใƒผใƒกใƒƒใ‚ปใƒผใ‚ธใ‚„ใƒญใ‚ฐใŒใชใ„ใŸใ‚ๅŽŸๅ› ใ‚’ๆŽขใ™ใซใฏ้™็•ŒใŒใ‚ใ‚Šใพใ™ใญ๏ผ‰

    ใใฎใ‚คใƒกใƒผใ‚ธใงใฏ่งฃๆฑบใŒ้›ฃใ—ใ„ใจๅˆคๆ–ญใ•ใ‚Œใ€ไปฅไธ‹ใฎใ‚ˆใ†ใซUbuntuใƒ™ใƒผใ‚นใซSSH + Dockerใ‚จใƒณใ‚ธใƒณใ‚’ใ‚คใƒณใ‚นใƒˆใƒผใƒซใ—ใŸใƒใƒผใ‚ธใƒงใƒณใ‚’ๅ†ใƒ“ใƒซใƒ‰ใ—ใฆ้…ๅธƒใ—ใพใ—ใŸใ€‚

    https://hub.docker.com/repository/docker/edowon0623/docker-server/general

    ไธŠ่จ˜ใง็™บ็”Ÿใ—ใŸๅ•้กŒ็ญ‰ใฏๅ…จใฆ่งฃๆถˆใ•ใ‚ŒใŸใ“ใจใ‚’็ขบ่ชใ—ใพใ—ใŸใ€‚ Ubuntnใงใฏใ€Dockerใ‚ตใƒผใƒ“ใ‚นใ‚’่ตทๅ‹•ใ™ใ‚‹ใŸใ‚ใซใ€ไปฅไธ‹ใฎใ‚ณใƒžใƒณใƒ‰ใ‚’ๅ…ˆใซๅฎŸ่กŒใ—ใฆใใ ใ•ใ„ใ€‚

     service start docker

    ไปŠๅพŒใ‚‚ใ€DinDใฎๅ•้กŒใชใฉใ€ๅฎŸ็ฟ’ใซ้–ข้€ฃใ™ใ‚‹ๅ•้กŒใŒ็ขบ่ชใ•ใ‚ŒใŸใ‚ˆใ†ใซใ€ๆ›ดๆ–ฐใ•ใ‚ŒใŸๅฎŸ่ทต็’ฐๅขƒใ‚’ๆไพ›ใ—ใพใ™ใ€‚

    ๆฅ้€ฑใฏ้€ฃไผ‘ใงใ™ใญใ€‚็งๅ€‹ไบบ็š„ใซๅคšไบ‹ๅคš้›ฃใ—ใŸ2024ๅนดใงใ—ใŸใŒใ€ๆ–ฐใ—ใ„ๅฟƒใงๆ–ฐใ—ใ„ไธ€ๅนดใ‚’ๅง‹ใ‚ใ‚‹ใ‚ˆใ†ใซใ—ใพใ™ใ€‚ไปŠๅนดใฏใ€ใ‚ˆใ‚Š่‰ฏใ„่ฌ›็พฉใง้ ป็นใซ่จชใ‚Œใพใ—ใ‚‡ใ†ใ€‚ๆ˜Žใ‘ใพใ—ใฆใŠใ‚ใงใจใ†ใ”ใ–ใ„ใพใ™ใ€‚

    ใ‚ใ‚ŠใŒใจใ†ใ”ใ–ใ„ใพใ™ใ€‚

    0
  • kenneth๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€

    ** ansible-serverใ‹ใ‚‰windowsใฎK8sใธใฎใƒ†ใ‚นใƒˆๆ™‚ใฎใƒชใƒ•ใ‚กใƒฌใƒณใ‚น

    ansible-serverใ‚’ๅˆฉ็”จใ—ใฆWindowsใซใ‚คใƒณใ‚นใƒˆใƒผใƒซใ—ใŸdocker-desktopใฎKubernetesใซๆŽฅ็ถšใ—ใฆใƒ†ใ‚นใƒˆใ‚’่กŒใ†ๅ ดๅˆใฏใ€ไปฅไธ‹ใฎๅ†…ๅฎนใ‚’็ขบ่ชใ—ใฆใใ ใ•ใ„ใ€‚

    ansible-serverใงssh-copy-idใ‚ณใƒžใƒณใƒ‰ใ‚’ๅˆฉ็”จใ—ใฆwindowsใซid_rsa.pubใ‚ญใƒผใƒ•ใ‚กใ‚คใƒซใฎๅ†…ๅฎนใ‚’ใ‚ณใƒ”ใƒผใ—ใ‚ˆใ†ใจใ™ใ‚‹ใจใ€้€šๅธธใฎใ‚ญใƒผใƒ•ใ‚กใ‚คใƒซใฎๅ†…ๅฎนใงใฏใชใใ€ECHOใ€œใจใ„ใ†ๆ–‡ๅญ—ๅˆ—ใŒใ‚ทใƒฃใƒ™ใƒซใซใชใฃใฆใ—ใพใ†ๅ ดๅˆใŒใ‚ใ‚Šใพใ™ใ€‚ใ“ใฎๅ ดๅˆใฏใ€ssh-copy-idใ‚ณใƒžใƒณใƒ‰ใฎไปฃใ‚ใ‚Šใซใ€ๅฏพๅฟœใ™ใ‚‹id_rsa.pubใ‚ญใƒผใƒ•ใ‚กใ‚คใƒซใฎๅ†…ๅฎนใ‚’็›ดๆŽฅใ‚ณใƒ”ใƒผใ—ใฆไฝฟ็”จใ™ใ‚‹ๅฟ…่ฆใŒใ‚ใ‚Šใพใ™ใ€‚ไฝ•ใ‚‰ใ‹ใฎๆ–นๆณ•ใ‚’ไฝฟ็”จใ—ใŸ็ตๆžœใจใ—ใฆใ€ windows ใฎ .ssh ใƒ•ใ‚ฉใƒซใƒ€ใซใ‚ใ‚‹ authorized_keys ใƒ•ใ‚กใ‚คใƒซใซ ansible-server ใง็”Ÿๆˆใ—ใŸid_rsa.pubใ‚ญใƒผใƒ•ใ‚กใ‚คใƒซใฎๅ†…ๅฎนใŒไฟๅญ˜ใ•ใ‚Œใ‚Œใฐใ‚ˆใ„ใ€‚ใ“ใฎๆ™‚ใฎๆณจๆ„็‚นใฏใ€ansible-serverใซใƒญใ‚ฐใ‚คใƒณใ—ใŸใ‚ขใ‚ซใ‚ฆใƒณใƒˆใจwindowsใ‚ตใƒผใƒใƒผใซใƒญใ‚ฐใ‚คใƒณใ™ใ‚‹ใ‚ขใ‚ซใ‚ฆใƒณใƒˆใจใŒไธ€่‡ดใ—ใชใ‘ใ‚Œใฐใชใ‚‰ใšใ€ใใฎใ‚ขใ‚ซใ‚ฆใƒณใƒˆใฏwindowsใง็ฎก็†่€…ๆจฉ้™ใ‚’ๆŒใฃใฆใ„ใ‚‹ๅฟ…่ฆใŒใ‚ใ‚Šใ€dockerใ‚„kubectlใชใฉใฎๅ‘ฝไปคใ‚’ไฝฟ็”จใ™ใ‚‹้š›ใซใ‚จใƒฉใƒผใŒ็™บ็”Ÿใ—ใชใ„ใงใฏใ‚ใ‚Šใพใ›ใ‚“ใ€‚่ฆ็ด„ใ™ใ‚‹ใจใ€Windowsใซใƒญใ‚ฐใ‚คใƒณใ™ใ‚‹ใ‚ขใ‚ซใ‚ฆใƒณใƒˆใจๅŒใ˜ใ‚ขใ‚ซใ‚ฆใƒณใƒˆๅใงansible-serverใฎใ‚ขใ‚ซใ‚ฆใƒณใƒˆใ‚’ไฝœๆˆใ—ใŸๅพŒใ€ใ‚ญใƒผใ‚’ใ‚ณใƒ”ใƒผใ™ใ‚‹ๅฟ…่ฆใŒใ‚ใ‚Šใพใ™ใ€‚ใ“ใฎใ‚ˆใ†ใช้Ž็จ‹ใŒ็…ฉใ‚ใ—ใ„ๅ ดๅˆใฏใ€sshๆŽฅ็ถšๆ™‚ใซ่ช่จผใชใ—ใงๆŽฅ็ถšใ™ใ‚‹ใŸใ‚ใซssh-copy-idใ‚ณใƒžใƒณใƒ‰ใ‚’ไฝฟ็”จใ™ใ‚‹ใฎใงใ€ใ“ใฎ้ƒจๅˆ†ใฏใใฎใพใพใƒ‘ใ‚นใƒฏใƒผใƒ‰ใ‚’ๅ…ฅๅŠ›ใ—ใชใŒใ‚‰้€ฒ่กŒใ—ใ€ansible-playbookใงใฏansibleใฎhostsใƒ•ใ‚กใ‚คใƒซใซwindowsๆŽฅ็ถšๆƒ…ๅ ฑใ‚’่จ˜้Œฒใ™ใ‚‹ใ”ไฝฟ็”จใ„ใŸใ ใใจใ€playbookใฎๅฎŸ่กŒๆ™‚ใซใฏๅ•้กŒใชใ้€ฒ่กŒใงใใพใ™ใ€‚

    ไปฅไธ‹ใฎๅฎŸ่กŒใƒ—ใƒญใ‚ปใ‚นใฎ่ชฌๆ˜Žใ‚’ๅ‚็…งใ—ใฆใใ ใ•ใ„ใ€‚

    • Windows OS (docker-desktop ใ‚คใƒณใ‚นใƒˆใƒผใƒซใ€Kubernetes ๅฎŸ่กŒใ€IP: 192.168.0.7)

    • docker-server (ใƒ‰ใƒƒใ‚ซใƒผใ‚ณใƒณใƒ†ใƒŠใ€IP: 172.17.0.3)

    • ansible-server๏ผˆDockerใ‚ณใƒณใƒ†ใƒŠใ€Ansibleใ‚คใƒณใ‚นใƒˆใƒผใƒซใ€IP๏ผš172.17.0.4๏ผ‰

    1. ใพใšใ€ansible-serverใง็”Ÿๆˆใ•ใ‚ŒใŸid_rsa.pubใ‚ญใƒผใ‚’docker-serverใซssh-copy-idใ‚ณใƒžใƒณใƒ‰ใ‚’ไฝฟ็”จใ—ใฆใ‚ณใƒ”ใƒผใ—ใพใ™ใ€‚ docker-serverใฎใ‚ญใƒผใ‚’ใ‚ณใƒ”ใƒผใ—ใฆใ€sshใŒใƒ‘ใ‚นใƒฏใƒผใƒ‰ใชใ—ใงๆŽฅ็ถšใ•ใ‚Œใฆใ„ใ‚‹ใ“ใจใ‚’็ขบ่ชใ—ใฆใใ ใ•ใ„ใ€‚

    windows_ansible_step1.png

     

    1. ansible-serverใฎid_rsa.pubใ‚ญใƒผใ‚’windowsใ‚ตใƒผใƒใƒผใซใ‚ณใƒ”ใƒผใ—ใพใ™ใ€‚ ๏ผˆไธ‹ใฎ็”ปๅƒใฏ docker-server ใซใชใฃใฆใ„ใพใ™ใŒใ€ansible-server ใ‹ใ‚‰้€ฒใ‚“ใงใใ ใ•ใ„๏ผ‰ใ€‚ใŸใ ใ—ใ€ id_rsa.pubใ‚ญใƒผใ‚’็”Ÿๆˆใ™ใ‚‹้š›ใฎใ‚ขใ‚ซใ‚ฆใƒณใƒˆใจ windows ใฎ openssh ใซๆŽฅ็ถšใ™ใ‚‹ใ‚ขใ‚ซใ‚ฆใƒณใƒˆใŒๅŒใ˜ใงใชใ‘ใ‚Œใฐใชใ‚‰ใšใ€ใใฎ windows ใ‚ขใ‚ซใ‚ฆใƒณใƒˆใซใฏ docker ใ‚„ kubectl ใ‚ณใƒžใƒณใƒ‰ใ‚’ๅฎŸ่กŒใงใใ‚‹็ฎก็†่€…ๆจฉ้™ใ‚’ๆŒใฃใฆใ„ใ‚‹ๅฟ…่ฆใŒใ‚ใ‚Šใพใ™ใ€‚ใ“ใฎใจใใ€ssh-copy-idใ‚ณใƒžใƒณใƒ‰ใ‚’ไฝฟ็”จใ—ใฆid_rsa.pubใ‚ญใƒผใฎใ‚ณใƒ”ใƒผใ‚’่ฉฆใฟใ‚‹ใจใ€Windowsใฎauthorized_keysใƒ•ใ‚กใ‚คใƒซใซid_rsa.pubใ‚ญใƒผใฎๅ†…ๅฎนใŒใ‚ณใƒ”ใƒผใ•ใ‚Œใ‚‹ใฎใงใฏใชใใ€ECHO~ใจใ„ใ†ๆ–‡ๅญ—ๅˆ—ใŒใ‚ณใƒ”ใƒผใ•ใ‚Œใฆใ—ใพใ†ๅ ดๅˆใŒใ‚ใ‚Šใพใ™ใŒใ€ใ“ใฎใ‚ˆใ†ใชๅ ดๅˆใฏใ€ใใฎใ‚ญใƒผใ‚’็›ดๆŽฅCOPY-PASTEๆ–นๅผใงWindowsใฎauthorized_keysใƒ•ใ‚กใ‚คใƒซใซใ‚ณใƒ”ใƒผใ—ใฆใใ ใ•ใ„ใ€‚ ๏ผˆauthorized_keysใƒ•ใ‚กใ‚คใƒซใŒwindowsใซใชใ„ๅ ดๅˆใฏใ€ใƒ•ใ‚กใ‚คใƒซใ‚‚็›ดๆŽฅไฝœๆˆใงใใพใ™๏ผ‰

    windows_ansible_step2.png

     

    1. id_rsa.pubใ‚ญใƒผใ‚’ใ‚ณใƒ”ใƒผใ™ใ‚‹ไฝœๆฅญใ‚’ใ™ใ‚‹ๅ‰ใซใ€ไปฅไธ‹ใฎ4๏ผ‰ใฎใ‚ˆใ†ใซwindowsใงsshใ‚ณใƒžใƒณใƒ‰ใ‚’ไฝฟใฃใฆwindowsใ‚ตใƒผใƒใƒผใซๆŽฅ็ถšใ•ใ‚Œใ‚‹ใ“ใจใ‚’็ขบ่ชใ—ใฆใใ ใ•ใ„ใ€‚ ๏ผˆopensshใŒใ‚คใƒณใ‚นใƒˆใƒผใƒซใ•ใ‚Œใฆใ„ใชใ„ๅ ดๅˆใฏใ‚คใƒณใ‚นใƒˆใƒผใƒซใ—ใฆใใ ใ•ใ„ใ€‚๏ผ‰

    windows_ansible_step3.png

     

    1. ไปŠๅ›žใฏใ€ansible-serverใ‹ใ‚‰็›ดๆŽฅsshใ‚ณใƒžใƒณใƒ‰ใงWindowsใฎopensshใ‚ตใƒผใƒใƒผใซๆŽฅ็ถšใ™ใ‚‹ใƒ†ใ‚นใƒˆใ‚’ใ—ใฆใฟใฆใใ ใ•ใ„ใ€‚

    windows_ansible_step4.png

     

    1. ไธŠ่จ˜ใฎ2ใง่ชฌๆ˜Žใ—ใŸใ‚ˆใ†ใซใ€ id_rsa.pubใ‚ญใƒผใ‚’ใ‚ณใƒ”ใƒผใ™ใ‚‹ใจใใฏใ€ id_rsa.pubใ‚ญใƒผใ‚’Windowsใฎใ‚ขใ‚ซใ‚ฆใƒณใƒˆใจๅŒใ˜ใ‚ขใ‚ซใ‚ฆใƒณใƒˆใงไฝœๆˆใ™ใ‚‹ๅฟ…่ฆใŒใ‚ใ‚Šใพใ™ใ€‚ใ‚’่จ˜้Œฒใ—ใฆไฝฟ็”จใ™ใ‚‹ใ“ใจใ‚’ใŠๅ‹งใ‚ใ—ใพใ™ใ€‚ใจใซใ‹ใsshใ‚ณใƒžใƒณใƒ‰ใ‚’ไฝฟ็”จใ—ใฆ็›ดๆŽฅๆŽฅ็ถšใ‚’่ฉฆใฟใ‚‹ๅ ดๅˆใ‚ˆใ‚Šใ‚‚ใ€ansibleๅ‘ฝไปคใ‚’ไฝฟ็”จใ—ใฆๅ‡ฆ็†ใ™ใ‚‹ๅ ดๅˆใŒๅคšใ„ใฎใงใ€ssh-copy-idๆ“ไฝœใ‚’้€ฒใ‚ใ‚‹ใ“ใจใชใ็›ดๆŽฅansible hostsใƒ•ใ‚กใ‚คใƒซใซๆŽฅ็ถšๆƒ…ๅ ฑใ‚’ไฟๅญ˜ใ—ใฆไฝฟ็”จใ™ใ‚‹ใ‚ˆใ†ใซใ—ใพใ™ใ€‚ใ“ใฎใ‚ปใ‚ฏใ‚ทใƒงใƒณใงใฏใ€ansible_userใ€ansible_passwordใ‚จใƒณใƒˆใƒชใซWindowsใ‚ขใ‚ฏใ‚ปใ‚นใ‚ขใ‚ซใ‚ฆใƒณใƒˆๆƒ…ๅ ฑ๏ผˆ็งใฏ็ฎก็†่€…ๆจฉ้™ใ‚’ๆŒใคใƒฆใƒผใ‚ถใƒผใ‚ขใ‚ซใ‚ฆใƒณใƒˆๆƒ…ๅ ฑใจใƒ‘ใ‚นใƒฏใƒผใƒ‰ใ‚’ๅ…ฅๅŠ›ใ—ใพใ—ใŸ๏ผ‰ใ‚’ๅค‰ๆ›ดใงใใพใ™ใ€‚ ansible hosts ใƒ•ใ‚กใ‚คใƒซๆƒ…ๅ ฑใ‚’ๅฎŒๆˆใ—ใŸใ‚‰ใ€ๆฌกใฎ ansible ๅ‘ฝไปคใ‚’ไฝฟใฃใฆ ping ใƒขใ‚ธใƒฅใƒผใƒซใŒๆญฃๅธธใซๅฎŸ่กŒใ•ใ‚Œใฆใ„ใ‚‹ใ“ใจใ‚’็ขบ่ชใ—ใฆใใ ใ•ใ„ใ€‚

      • ansible windows -m in_ping -u [windows ใ‚ขใ‚ซใ‚ฆใƒณใƒˆ]

    windows_ansible_step5.png

     

    1. ansible-playbook ใ‚’ๅฎŸ่กŒใ™ใ‚‹ๅ‰ใซใ€windows ใซ K8s ใฎ manifest ใƒ•ใ‚กใ‚คใƒซใŒไฟๅญ˜ใ•ใ‚Œใฆใ„ใ‚‹ๅ ดๆ‰€ใ‚’็ขบ่ชใ—ใ€kubectl ใ‚ณใƒžใƒณใƒ‰ใ‚’ไฝฟใฃใฆ Kubernetes ใฎใƒชใ‚ฝใƒผใ‚นใ‚’็ขบ่ชใ—ใฆใฟใพใ™ใ€‚ไปฅไธ‹ใฎไพ‹ใงใฏใ€K8sใฎใ‚ตใƒผใƒ“ใ‚นใฎใƒชใ‚นใƒˆใ‚’็ขบ่ชใ—ใฆใŠใ‚Šใ€ๅŸบๆœฌ็š„ใซไฝœๆˆใ•ใ‚Œใ‚‹ใ‚ตใƒผใƒ“ใ‚นไปฅๅค–ใฎใƒฆใƒผใ‚ถใƒผใŒไฝœๆˆใ—ใŸใ‚ตใƒผใƒ“ใ‚นใฏ่ฆ‹ใˆใชใ„ใ“ใจใ‚’็ขบ่ชใ—ใฆใ„ใพใ™ใ€‚

    windows_ansible_step6.png

     

    1. ansible-serverใงplaybookใƒ•ใ‚กใ‚คใƒซใฎๅ†…ๅฎนใ‚’็ขบ่ชใ—ใพใ™ใ€‚ windowsใซใ‚ณใƒžใƒณใƒ‰ใ‚’ๆธกใ™ใฎใงใ€ไปฅไธ‹ใฎไพ‹ใฎใ‚ˆใ†ใซwin_commandใ‚ณใƒžใƒณใƒ‰ใ‚’ไฝฟ็”จใ—๏ผˆMacOSใฎๅ ดๅˆใฏcommandใ‚ณใƒžใƒณใƒ‰ใ‚’ไฝฟ็”จ๏ผ‰ใ€ๅฎŸ่กŒใ—ใŸใ„ใƒžใƒ‹ใƒ•ใ‚งใ‚นใƒˆใƒ•ใ‚กใ‚คใƒซใฎๅ ดๆ‰€ใ‚’็ตถๅฏพใƒ‘ใ‚นใจใ—ใฆๆŒ‡ๅฎšใ—ใพใ™ใ€‚ playbookใƒ•ใ‚กใ‚คใƒซใ‚’ๅฎŸ่กŒใ—ใฆๅฎŸ่กŒใ•ใ‚ŒใŸ็ตๆžœใ‚’็ขบ่ชใงใใพใ™ใ€‚

    windows_ansible_step7.png

     

    1. ๆœ€ๅพŒใซใ€windowsใงๅฎŸ่กŒใ—ใŸใƒชใ‚ฝใƒผใ‚นใŒๆญฃๅธธใซๅๆ˜ ใ•ใ‚ŒใŸใ‹ใ€kubectlๅ‘ฝไปคใ‚’ๅˆฉ็”จใ—ใฆ็ขบ่ชใ—ใฆใฟใ‚‹ใ“ใจใŒใงใใพใ™ใ€‚

    windows_ansible_step8.png

     

    ไธŠ่จ˜ใซใคใ„ใฆใ•ใ‚‰ใซ่ณชๅ•ใŒใ‚ใ‚‹ๅ ดๅˆใฏใ€่ณชๅ•ๆŽฒ็คบๆฟใซๆ›ธใ„ใฆใใ ใ•ใ„ใ€‚

    ๅ•้กŒใŒๆ‚ฉใ‚“ใงใ„ใŸๆ–นใ€…ใซใŠๅฝนใซ็ซ‹ใฆใฐๅนธใ„ใงใ™ใ€‚

    ใ‚ใ‚ŠใŒใจใ†ใ”ใ–ใ„ใพใ™ใ€‚

    0
  • kenneth๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€

    ใ“ใ‚“ใซใกใฏใ€้›ขๅณถ้™ขใงใ™ใ€‚

    ใ€ŒJenkinsใ‚’ๅˆฉ็”จใ—ใŸCI/CD Pipelineใฎๆง‹็ฏ‰ใ€่ฌ›็พฉใ‚’้€ฒใ‚ใชใŒใ‚‰ใ€ๅฎŸ็ฟ’็’ฐๅขƒๆง‹ๆˆใซ่‹ฆๅŠดใ™ใ‚‹ๆ–นใŒๅคšใใ€VMใง็’ฐๅขƒๆง‹ๆˆใ‚’ๆ‰ฑใ†้ƒจๅˆ†ใซใคใ„ใฆใฎ่ฌ›็พฉใ‚’ๅˆฅ้€”่ฃฝไฝœใ—ใฆๅ…ฑๆœ‰ใ™ใ‚‹ใ“ใจใซใชใ‚Šใพใ—ใŸใ€‚็ทด็ฟ’็’ฐๅขƒใฏใ€WindowsใŠใ‚ˆใณMacOS๏ผˆIntell chip๏ผ‰ใƒฆใƒผใ‚ถใƒผใฎๆ–นใŒๅพ“ๆฅใฎDocker+SSH็’ฐๅขƒใงใฏใชใใ€VirtualBoxใ‚’ๅˆฉ็”จใ—ใŸ็’ฐๅขƒใงVMใ‚’ๆง‹ๆˆใ—ใฆใฟใ‚‹ใ“ใจใŒใงใใ‚‹ใ‚ˆใ†ใซใ—ใพใ—ใŸใ€‚ VMใซใ‚คใƒณใ‚นใƒˆใƒผใƒซใ•ใ‚ŒใŸDockerใ‚’ๅˆฉ็”จใ—ใฆใ€ๅฐ‘ใ—ใงใ‚‚็ฐกๅ˜ใซๅฎŸ็ฟ’็’ฐๅขƒใ‚’ๆง‹ๆˆใ—ใพใ—ใŸใฎใงใ€ๅ‚่€ƒใซใ—ใฆใใ ใ•ใ„ใ€‚

    ใ‚ใ‚ŠใŒใจใ†ใ”ใ–ใ„ใพใ™ใ€‚

    0
  • kenneth๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€

    ใ“ใ‚“ใซใกใฏใ€้›ขๅณถ้™ขใงใ™ใ€‚

    ใพใšใ€่ฌ›็พฉใซ้–ขๅฟƒใ‚’ๆŒใฃใฆใใ ใ•ใฃใŸๆ–นใ€…ใซๆ„Ÿ่ฌใฎๆŒจๆ‹ถใ‚’ใ„ใŸใ—ใพใ™ใ€‚

    ใ“ใฎ่ฌ›็พฉใฏใ€ๅฎŸ่ทตใŒๅŸบๆœฌ็š„ใซไธ€็ท’ใซใชใ‚‹ในใ่ฌ›็พฉใงใ™ใ€‚็‰นใซJenkinsใ‚„Tomcatใ‚„Dockerใ‚ตใƒผใƒใƒผใฏ็›ดๆŽฅใ‚คใƒณใ‚นใƒˆใƒผใƒซใ—ใฆ็ทด็ฟ’ใ—ใฆใฟใ‚‹ใ“ใจใ‚’ใŠๅ‹งใ‚ใ—ใพใ™ใ€‚

    ๆฎ‹ๅฟตใชใŒใ‚‰ใ€ไธ€้ƒจใฎๅ—่ฌ›็”Ÿใฎๆ–น๏ผˆ็‰นใซใ€Windows๏ผ‰ใŒๅฎŸ็ฟ’ใ‚’้€ฒใ‚ใ‚‹ใŸใ‚ใซๅฟ…่ฆใช็’ฐๅขƒๆง‹็ฏ‰ใซๅ›ฐ้›ฃใŒใ‚ใ‚‹ใจๆ–‡ใ‚’ๆฎ‹ใ—ใฆใ„ใŸใ ใใพใ—ใŸใ€‚็งใฏ้–ข้€ฃใƒชใ‚ฝใƒผใ‚นใจใ‚นใ‚ฏใƒชใƒ—ใƒˆใ‚’ๅ…ฑๆœ‰ใ—ใพใ—ใŸใŒใ€่งฃๆฑบใงใใชใ„ๅ—่ฌ›็”Ÿใฎๆ–นใซใฏ็”ณใ—่จณใ‚ใ‚Šใพใ›ใ‚“ใ€‚

    ๅ…ˆใซๅ…ฑๆœ‰ใ—ใฆใ„ใŸใ ใ„ใŸใ€่ณชๅ•ๅ›ž็ญ”ใŠใ‚ˆใณ่ฟฝๅŠ ๆ˜ ๅƒใชใฉใ‚’้€šใ˜ใฆWindows+SSH+Dokcer็’ฐๅขƒใงใฎๅฎŸ็ฟ’ใ‚ฌใ‚คใƒ‰ใ‚’ๆไพ›ใ—ใฆใ„ใŸใ ใใพใ—ใŸใŒใ€่ฟฝๅŠ ใ—ใฆ็ขบ่ชใ•ใ‚ŒใŸไบ‹้ …ใŒใ‚ใ‚Šๅ…ฑๆœ‰ใ—ใพใ™ใ€‚

    • Windows๏ผ‰SSHใ‚ตใƒผใƒใƒผ๏ผˆwith docker๏ผ‰ๅฎŸ่กŒๅ‘ฝไปค๏ผˆๆ–นๆณ•1๏ผ‰

      • docker run --privileged --name docker-server -itd -p 10022:22 -p 8081:8080 -e container=docker -v /sys/fs/cgroup:/sys/fs/cgroup edowon0623/docker:latest /usr /sbin/init

    • Windows๏ผ‰SSHใ‚ตใƒผใƒใƒผ๏ผˆwith docker๏ผ‰ๅฎŸ่กŒๅ‘ฝไปค๏ผˆๆ–นๆณ•2ใ€ไธŠ่จ˜ใฎๅ‘ฝไปคใงๅฎŸ่กŒใ•ใ‚Œใชใ„ๅ ดๅˆ๏ผ‰

      • docker run -itd --name docker-server -p 10022:22 -e container=docker --tmpfs /run --tmpfs /tmp -v /sys/fs/cgroup:/sys/fs/cgroup:ro -v / var/run/docker.sock:/var/run/docker.sock edowon0623/docker:latest /usr/sbin/init

    ็งใŸใกใŒใƒ†ใ‚นใƒˆใ—ใŸไธ€้ƒจใฎWindows PCใงใฏใ€ไปฅไธ‹ใฎๅฎŸ็ฟ’ๆ–นๆณ•ใŒใ™ในใฆๆญฃๅธธใซๅ‹•ไฝœใ—ใฆใ„ใพใ—ใŸใŒใ€ๆœ€่ฟ‘่ณผๅ…ฅใ—ใŸWindows PC๏ผˆWSL2ใ‚คใƒณใ‚นใƒˆใƒผใƒซ๏ผ‰ใงๅฎŸ็ฟ’1ๅบฆใซใ‚จใƒฉใƒผใŒใ‚ใ‚‹ใ“ใจใ‚’็ขบ่ชใ—ใพใ—ใŸใ€‚็พๅœจๆŠŠๆกใ—ใŸใ‚จใƒฉใƒผใฎๅŽŸๅ› ใฏใ€WSL2ใงiptablesใฎ็”Ÿๆˆ้Ž็จ‹ใงไปฅไธ‹ใฎใ‚ˆใ†ใชใ‚จใƒฉใƒผใŒ็™บ็”Ÿใ™ใ‚‹ใ“ใจใงใ—ใŸใ€‚ใƒ†ใ‚นใƒˆใ—ใฆใฟใ‚‹ใจใ€็พๅœจใพใงใฏๅคงใใชๅ•้กŒใชใๅฎŸ็ฟ’ใŒๅฏ่ƒฝใจๅˆคๆ–ญใ•ใ‚Œใ€่ฉฒๅฝ“ใ‚คใƒกใƒผใ‚ธใจDockerfileๅ…ฑๆœ‰ใ—ใพใ™ใ€‚

    https://hub.docker.com/r/edowon0623/docker/tags -> docker pull edowon0623/docker:no_iptables

    https://github.com/joneconsulting/docker-files

    ใ—ใŸใŒใฃใฆใ€Windows็’ฐๅขƒใงDindๆ–นๅผ๏ผˆๅฎŸ็ฟ’ใ‚นใ‚ฏใƒชใƒผใƒ–ๆ–นๆณ•1๏ผ‰ใงDockerใ‚ตใƒผใƒœใŒ่ตทๅ‹•ใ•ใ‚Œใชใ„ๅ ดๅˆใฏใ€ไปฅไธ‹ใฎใ‚ณใƒžใƒณใƒ‰ใ‚’ไฝฟใฃใฆๅฎŸ็ฟ’ใ—ใฆใฟใฆใใ ใ•ใ„ใ€‚

    • Windows๏ผ‰SSHใ‚ตใƒผใƒใƒผ๏ผˆwith docker๏ผ‰ๅฎŸ่กŒๅ‘ฝไปค๏ผˆๆ–นๆณ•3๏ผ‰

      • docker run --privileged --name docker-server -itd -p 10022:22 -p 8081:8080 -e container=docker -v /sys/fs/cgroup:/sys/fs/cgroup edowon0623/docker:no_iptables /usr /sbin/init

    ใ‚‚ใกใ‚ใ‚“ใ€่ฉฒๅฝ“ใฎDockerใ‚ณใƒณใƒ†ใƒŠใ‚’่ตทๅ‹•ใ—ใŸๅพŒใซใ€SSHๆŽฅ็ถšๅพŒใ€systemctl start dockerใ‚ณใƒžใƒณใƒ‰ใ‚’ๅฎŸ่กŒใ—ใฆใ„ใŸใ ใใ€Dockerใ‚ตใƒผใƒใŒ่ตทๅ‹•ใ•ใ‚Œใพใ™ใ€‚

    ใ‚‚ใ†ไธ€ๅบฆใ€่ฌ›็พฉใซ้–ขๅฟƒใ‚’ใŠๅฏ„ใ›ใ„ใŸใ ใใ‚ใ‚ŠใŒใจใ†ใ”ใ–ใ„ใพใ—ใŸใ‚‰ใ€ใ‚ˆใ‚Š่‰ฏใ„ใ‚ณใƒณใƒ†ใƒณใƒ„ใ‚’ๆŒใฃใฆๆ–ฐใ—ใ„่ฌ›็พฉใ‚‚ๆบ–ๅ‚™ใ•ใ›ใฆใ„ใŸใ ใใพใ™ใ€‚

    ใ‚ใ‚ŠใŒใจใ†ใ”ใ–ใ„ใพใ™ใ€‚

    0
  • kenneth๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€

    ใ“ใ‚“ใซใกใฏใ€้›ขๅณถ้™ขใงใ™ใ€‚

    Jenkinsใ‚’ไฝฟ็”จใ—ใŸCI / CD Piplineใฎๆง‹็ฏ‰่ฌ›็พฉใงNodejsใงๆ›ธใ‹ใ‚ŒใŸใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใ‚’ใƒ‡ใƒ—ใƒญใ‚คใ™ใ‚‹ๆ–นๆณ•ใซใคใ„ใฆ่ฌ›็พฉ่ณ‡ๆ–™ใ‚’่ฟฝๅŠ ใ—ใพใ—ใŸใ€‚ใ“ใฎใ‚ณใƒณใƒ†ใƒณใƒ„ใ‚’ๅŽปใ‚‹9ๆœˆใ‹ใ‚‰ใƒชใ‚ฏใ‚จใ‚นใƒˆใ—ใพใ—ใŸใŒใ€ๅคšใใ‚‚ใชใ„ๅˆ†้‡ใ ใฃใŸใซใ‚‚ใ‹ใ‹ใ‚ใ‚‰ใšใ‚ขใƒƒใƒ—ใƒญใƒผใƒ‰ใ—ใพใ™ใ€‚่ณ‡ๆ–™ใŒ้…ใ™ใŽใฆใ‚ขใƒƒใƒ—ใƒญใƒผใƒ‰ใ•ใ‚Œใฆ็”ณใ—่จณใ‚ใ‚Šใพใ›ใ‚“ใ€‚

    Nodejsใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใ‚’PM2ใจใ„ใ†Process Managerใง่ตทๅ‹•ใ—ใชใŒใ‚‰ใ€ใ“ใ‚Œใ‚’Dockerใ‚คใƒกใƒผใ‚ธใจใ—ใฆใƒ‡ใƒ—ใƒญใ‚คใ—ใฆๅฎŸ่กŒใ™ใ‚‹ใƒ—ใƒญใ‚ปใ‚นใซใคใ„ใฆ่ชฌๆ˜Žใ—ใฆใ„ใพใ™ใ€‚ไธ่ถณใ—ใฆใ„ใ‚‹่ณ‡ๆ–™ใงใ™ใŒใ€ๅฟ…่ฆใชๆ–นใซๅฐ‘ใ—ใงใ‚‚ๅฝน็ซ‹ใคใ“ใจใ‚’้ก˜ใฃใฆใ€่ฟฝๅŠ ใฎ่ณชๅ•ไบ‹้ …ใฎใ‚ใ‚‹้ƒจๅˆ†ใฏๆŽฒ็คบๆฟใซๆ›ธใ„ใฆใใ ใ•ใ„ใ€‚ๆœ€่ฟ‘ใ€ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใฎ็ท ใ‚ๅˆ‡ใ‚Šใงใ™ใใซ็ขบ่ชใงใใพใ›ใ‚“ใงใ—ใŸใŒใ€ใงใใ‚‹ใ ใ‘ๆ—ฉใ็ขบ่ชใ—ใฆๅ›ž็ญ”ใ•ใ›ใฆใ„ใŸใ ใใพใ™ใ€‚

    https://www.inflearn.com/course/%EC%A0%A0%ED%82%A8%EC%8A%A4-ci-cd-%ED%8C%8C%EC%9D%B4%ED% 94%84%EB%9D%BC%EC%9D%B8/unit/138551

    ๆฎ‹ใ‚Šใฎ2022ๅนดไธ€ๅนด็„ก้ง„ใซใ‚ˆใไป•ไธŠใ’ใฆใใ ใ•ใ„ใ€‚

    ใ‚ใ‚ŠใŒใจใ†ใ”ใ–ใ„ใพใ™ใ€‚

    1

๏ฟฅ11,181