강의 덕분에 회사 개발서버에 돌아가는 모든 web 프로젝트를 ci/cd 기반으로 돌아갈 수 있게 되었습니다. 강의 듣던 중 궁금한게 있어 질문 드립니다. Ansible 영상 중 docker image push 를 이용해서 Ansible image 와 container 를 나눠 yml을 구동하려 하는데 dockerfile이 아닌 해당 방법으로 하려는 이유가 궁금합니다. 의도라고 하죠? 궁금한 이유 1. 프로젝트 소스가 포함된 이미지가 docker 사이트에 등록되지 않나요? [보안] 2. 위처럼 하면 뭐가 좋아지는건지?
영상과 달리 webapps안에 manager와 host-manager 디렉토리가 안보이실텐데 webapps.dist 디렉토리 안에 있습니다. 영상처럼 context.xml 수정하시고 cp -R webapps.dist/* webapps 명령어로 webapps.dist 안에 있는 파일들을 복사하여 webapps 아래로 옮겨주시고 재부팅하시면 됩니다.
windows에서 테스트 진행 중 입니다. 커뮤니티의 모든 글을 읽고 다 진행해봤습니다. ansible windows -m win_ping -u z2x2c 해당 명령어를 입력하면 성공했다고 나옵니다. 192.168.219.59 | SUCCESS => { "changed": false, "ping": "pong" } 근데 ansible-server의 /root/k8s 해당 경로에서 ansible-playbook -i hosts k8s-cicd-deployment-playbook.yml -u z2x2c 해당 명령어를 입력하면 [WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details PLAY [Create pods using deployment] ************************************************************************************ TASK [Gathering Facts] ************************************************************************************************* fatal: [192.168.219.59]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: z2x2c@192.168.219.59: Permission denied (publickey,password,keyboard-interactive).", "unreachable": true} PLAY RECAP ************************************************************************************************************* 192.168.219.59 : ok=0 changed=0 unreachable=1 failed=0 skipped=0 rescued=0 ignored=0 위와 같은 오류가 나옵니다.. 왜이러는지 답변 가능할까요? 너무 스트레스 받네요 ㅠㅠ..
제가 도커나 클라우드 운영 경험은 전혀없습니다. [운영환경] 에서는 jenkins에서 war파일만들어서 docker-server에 전달해서 도커 이미지만 만들고, ansible-server에서 docker-server에서 만든 도커 이미지로 컨테이너를 만들어서 실행하는데요. 1) 앞 강좌에서 [ 로컬환경 ]에서는 이미지 push하고 pull해서 컨테이너 만들어서 진행했었는데, 운영환경에서는 이런식으로 진행하면 안되나 보죠? 2) 현 강의대로 하면 [ 운영환경 ] 에서 docker-server가 10개 라면 jenkins에서 10개 서버에 다 들어가서 이미지 만들어야 하는데... 실제 운영에서 이렇게 운영하는지 아니면 그냥 강좌라서 이런식으로 구성한건지 궁금합니다. 아니면 실제 운영환경이 아니라 AWS에서 개발환경 을 이렇게 구성한다는 얘기인가요? 감사합니다.
[INFO] ------------------------------------------------------------------------ Waiting for Jenkins to finish collecting data [JENKINS] Archiving /var/jenkins_home/workspace/my-thrid-project/pom.xml to com.njonecompany.web/web/1.0/web-1.0.pom [JENKINS] Archiving /var/jenkins_home/workspace/my-thrid-project/target/hello-world.war to com.njonecompany.web/web/1.0/web-1.0.war channel stopped [DeployPublisher][INFO] Attempting to deploy 1 war file(s) [DeployPublisher][INFO] Deploying /var/jenkins_home/workspace/my-thrid-project/target/hello-world.war to container Tomcat 9.x Remote with context null ERROR: Build step failed with exception org.codehaus.cargo.container.ContainerException: Failed to redeploy [/var/jenkins_home/workspace/my-thrid-project/target/hello-world.war] at PluginClassLoader for deploy//org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:176) at PluginClassLoader for deploy//hudson.plugins.deploy.CargoContainerAdapter.deploy(CargoContainerAdapter.java:81) at PluginClassLoader for deploy//hudson.plugins.deploy.CargoContainerAdapter$DeployCallable.invoke(CargoContainerAdapter.java:167) at PluginClassLoader for deploy//hudson.plugins.deploy.CargoContainerAdapter$DeployCallable.invoke(CargoContainerAdapter.java:136) at hudson.FilePath.act(FilePath.java:1235) at hudson.FilePath.act(FilePath.java:1218) at PluginClassLoader for deploy//hudson.plugins.deploy.CargoContainerAdapter.redeployFile(CargoContainerAdapter.java:133) at PluginClassLoader for deploy//hudson.plugins.deploy.PasswordProtectedAdapterCargo.redeployFile(PasswordProtectedAdapterCargo.java:95) at PluginClassLoader for deploy//hudson.plugins.deploy.DeployPublisher.perform(DeployPublisher.java:113) at jenkins.tasks.SimpleBuildStep.perform(SimpleBuildStep.java:123) at hudson.tasks.BuildStepCompatibilityLayer.perform(BuildStepCompatibilityLayer.java:80) at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:47) at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:818) at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:767) at PluginClassLoader for maven-plugin//hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.post2(MavenModuleSetBuild.java:1072) at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:711) at hudson.model.Run.execute(Run.java:1917) at PluginClassLoader for maven-plugin//hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:543) at hudson.model.ResourceController.execute(ResourceController.java:101) at hudson.model.Executor.run(Executor.java:446) Caused by: java.net.ConnectException: Connection timed out at java.base/sun.nio.ch.Net.connect0(Native Method) at java.base/sun.nio.ch.Net.connect(Unknown Source) at java.base/sun.nio.ch.Net.connect(Unknown Source) at java.base/sun.nio.ch.NioSocketImpl.connect(Unknown Source) at java.base/java.net.Socket.connect(Unknown Source) at java.base/java.net.Socket.connect(Unknown Source) at java.base/sun.net.NetworkClient.doConnect(Unknown Source) at java.base/sun.net.www.http.HttpClient.openServer(Unknown Source) at java.base/sun.net.www.http.HttpClient.openServer(Unknown Source) at java.base/sun.net.www.http.HttpClient.<init>(Unknown Source) at java.base/sun.net.www.http.HttpClient.New(Unknown Source) at java.base/sun.net.www.http.HttpClient.New(Unknown Source) at java.base/sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown Source) at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect0(Unknown Source) at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source) at java.base/sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source) at PluginClassLoader for deploy//org.codehaus.cargo.container.tomcat.internal.TomcatManager.invoke(TomcatManager.java:567) at PluginClassLoader for deploy//org.codehaus.cargo.container.tomcat.internal.TomcatManager.list(TomcatManager.java:882) at PluginClassLoader for deploy//org.codehaus.cargo.container.tomcat.internal.TomcatManager.getStatus(TomcatManager.java:895) at PluginClassLoader for deploy//org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:161) ... 19 more java.net.ConnectException: Connection timed out at java.base/sun.nio.ch.Net.connect0(Native Method) at java.base/sun.nio.ch.Net.connect(Unknown Source) at java.base/sun.nio.ch.Net.connect(Unknown Source) at java.base/sun.nio.ch.NioSocketImpl.connect(Unknown Source) at java.base/java.net.Socket.connect(Unknown Source) at java.base/java.net.Socket.connect(Unknown Source) at java.base/sun.net.NetworkClient.doConnect(Unknown Source) at java.base/sun.net.www.http.HttpClient.openServer(Unknown Source) at java.base/sun.net.www.http.HttpClient.openServer(Unknown Source) at java.base/sun.net.www.http.HttpClient.<init>(Unknown Source) at java.base/sun.net.www.http.HttpClient.New(Unknown Source) at java.base/sun.net.www.http.HttpClient.New(Unknown Source) at java.base/sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown Source) at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect0(Unknown Source) at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source) at java.base/sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source) at PluginClassLoader for deploy//org.codehaus.cargo.container.tomcat.internal.TomcatManager.invoke(TomcatManager.java:567) at PluginClassLoader for deploy//org.codehaus.cargo.container.tomcat.internal.TomcatManager.list(TomcatManager.java:882) at PluginClassLoader for deploy//org.codehaus.cargo.container.tomcat.internal.TomcatManager.getStatus(TomcatManager.java:895) at PluginClassLoader for deploy//org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:161) at PluginClassLoader for deploy//hudson.plugins.deploy.CargoContainerAdapter.deploy(CargoContainerAdapter.java:81) at PluginClassLoader for deploy//hudson.plugins.deploy.CargoContainerAdapter$DeployCallable.invoke(CargoContainerAdapter.java:167) at PluginClassLoader for deploy//hudson.plugins.deploy.CargoContainerAdapter$DeployCallable.invoke(CargoContainerAdapter.java:136) at hudson.FilePath.act(FilePath.java:1235) at hudson.FilePath.act(FilePath.java:1218) at PluginClassLoader for deploy//hudson.plugins.deploy.CargoContainerAdapter.redeployFile(CargoContainerAdapter.java:133) at PluginClassLoader for deploy//hudson.plugins.deploy.PasswordProtectedAdapterCargo.redeployFile(PasswordProtectedAdapterCargo.java:95) at PluginClassLoader for deploy//hudson.plugins.deploy.DeployPublisher.perform(DeployPublisher.java:113) at jenkins.tasks.SimpleBuildStep.perform(SimpleBuildStep.java:123) at hudson.tasks.BuildStepCompatibilityLayer.perform(BuildStepCompatibilityLayer.java:80) at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:47) at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:818) at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:767) at PluginClassLoader for maven-plugin//hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.post2(MavenModuleSetBuild.java:1072) at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:711) at hudson.model.Run.execute(Run.java:1917) at PluginClassLoader for maven-plugin//hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:543) at hudson.model.ResourceController.execute(ResourceController.java:101) at hudson.model.Executor.run(Executor.java:446) Build step 'Deploy war/ear to a container' marked build as failure Finished: FAILURE 톰캣자체에는 문제가 없는데, 젠킨스에서 연결이 계속 안되어서 질문드립니다. 젠킨스를 실행한 ec2 ssh에서 톰캣 서버랑 포트로 연결이 안되는데 이 문제 때문일까요?
해당 서버에서 도커를 설치하던데... sudo yum install -y docker 이렇게 설치한 도커엔진은 운영에서 항상 무료로 사용이 가능한가요? Docker CE(Community Edition)는 무료라던데. 저 명령어로 설치되는 건 어떤 버전인가요? Docker CE 이 맞나요?
저는 Ubuntu Desktop 사용하는데 Ansible 이미지를 어디서 받는건가요? 윈도우나 MacOS(intel, m1)는 있는데, 우분투에서 실습하는 사용자를 위한 Ansible 이미지 다운로드는 어디서 하나해서욤... 도커 허브에 가서 검색하니깐. alpine/ansible , ansible/ansible 뭐 이런것들 있던데, 이런것 중에 하나 사용하면 되는건가요? 그리고 왜 별도로 Ansible 이미지 만들어서 제공해주시는지 그 이유도 궁금합니다. 뭐 이유가 있을테니깐요. 혹시 우분트 사용자는 도커를 써서 실습하는게 아니라 그냥 Ansible설치해야 하는건가요? ㅋㅋㅋ 처음이라 잘 모르겠네요. 따라서 할려면 왠지 도커 안에다가 설치해야 할것 같은데...ㅎㅎ 일반적으로 운영에서는 Ansible을 어떻게 사용하는지도 궁금합니다. (도커안에서 운영하는지 아니면 그냥 설치해서 사용하는지 궁금합니다.) 감사합니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. MacOs m1 사용중인데 Dockerfile을 이용해서 이미지 빌드한 후에 docker run --privileged -p 8080:8080 --name mytomcat docker-server:latest 명령어로 컨테이너 실행하면 exec /usr/local/tomcat/bin/ catalina.sh : invalid argument 오류가 발생합니다 edowon0623/docker-server:m1으로 이미지 받아서 실습 내용과 동일하게 실행했습니다
Dockerfile로 이미지가 만들어진 상태에서 docker run --privileged -p 8080:8080 --name mytomcat docker-server:latest 명령어를 입력하면 위와 같은 에러가 발생합니다. 실습 환경은 DinD 방식을 사용하고 있으며, edowon0623/docker-server:m1 이미지를 pull 받아서 컨테이너를 실행시키고 있습니다
아래 이미지는 도커 실행 후 docker ps 명령어로 docker 가 잘 실행중인지 확인한 것인데요,, 이후 브라우저에서 " http://127.0.0.1:8080/ " 로 접속하면 사이트에 연결할 수 없음으로 나오는데 " http://127.0.0.1:8081"로 접속하면 로그인 창이 열리고 있습니다... 임시 비밀번호로 로그인도 잘 되고요.. 혹시 원인을 알 수 있는 방법이 있을까요? - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
다운받은 docker 이미지에 ssh 접속까지 잘되는데 거기서 docker 를 띄우려고 하면 masked 되어있다고 나옵니다. 검색을 해봐서 systemctl unmask docker 또는 sysatemctl unmask docker.service 를 해봐도 mask 상태가 풀리지 않습니다. [root@27555416d6cd system]# systemctl status docker ● docker.service Loaded: masked (Reason: Unit docker.service is masked.) Active: inactive (dead) [root@27555416d6cd system]# systemctl enable docker Failed to enable unit: Unit file /usr/lib/systemd/system/docker.service is masked.
안녕하세요. MSA 강의부터 젠킨스까지 강의 재밌게 듣고 있습니다. 강의를 듣다가 ansible의 역할에 대해 궁금한 점이 생겨 질문드립니다. 현재 저희가 구축한 환경은 젠킨스 -> ansible -> k8s로 이루어진 환경으로 알고있습니다. 젠킨스가 빌드하고 빌드된 파일을 ansible로 보내서 ansible에서 이미지를 빌드 및 푸시하고 k8s에서 해당 이미지를 사용하여 배포하는 과정이라고 이해했습니다. 저는 여기서 ansible의 역할이 jenkins만으로 충분히 대체될 수 있다는 생각이 들었습니다. 이미지를 빌드하고 푸시하는 과정을 jenkins의 exec command나 script로 따로 짜서 진행하면 ansible의 역할을 대체할 수 있나요? 만약 대체할 수 있다면 그럼에도 불구하고 ansible을 사용하는 이유가 분명이 있을 것이라 사료되는데요, 저희가 구축한 환경 혹은 현업에서 ansible이 또 어떤 방식으로 활용될 수 있을지가 궁금해서 질문드립니다. 감사합니다.
강의에서 SonarQube를 설치하기 위해 사용했던 코드는 sudo wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.6.zip 였습니다. 하지만, openjdk-17버전에서 위의 SonarQube 버전으로 작업을 했을 때, SonarQube가 최신 JVM 버전에서 더 이상 지원되지 않는 UseConcMarkSweepGC 옵션을 사용하므로 실행이 되지 않습니다. 따라서, openjdk-17버전으로 자바를 설치하신 분들은 sudo wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-9.9.1.69595.zip 위 명령어를 사용하셔서 진행하시면 될 것 같습니다. :)
강의내용에 ssh-copy-id root@172.17.0.2 로 되어있습니다. 처음부터 강의 따라왔다면 172.17.0.2 는 jenkins-server일텐데 강의 내용대로 172.17.0.2 에 copy하는게 맞나요?? 아니면 강의순서대로 올 경우 ansible ip는 172.17.0.4니까 copy는 172.17.0.3에 하는기 맞나요?? 실습 따라하기 너무 햇갈리내요
실행시 마지막에 ...access permission. 에러시 아래 참고 ※ 윈도우 10022포트 확인하여 아래 적용 후 1번 시작 - 10022포트 막혀있는지 확인: netsh interface ipv4 show excludedportrange protocol=tcp - winnat 정지: net stop winnat - 10022포트 허용: netsh int ipv4 add excludedportrange protocol=tcp startport=10022 numberofports=1 - winnat 시작: net start winnat
https://learn.microsoft.com/ko-kr/windows-server/administration/openssh/openssh_install_firstuse?tabs=powershell 를 따라서 window ssh 서버 클라이언트 설치하고 ansinble-server와 윈도우 pc(쿠버네티스 돌아갈 host)에 python 3.9로 설치해줬고, ansible-server에서 pip install pywinrm 설치 linux에서 ssh-keygen 한 것 윈도우 pc에 authorized_key에 직접 복사해줬음 https://github.com/AlbanAndrieu/ansible-windows/blob/master/files/ConfigureRemotingForAnsible.ps 에서 파일 직접 받아서 파워쉘에서 powershell.exe -ExecutionPolicy ByPass -File C:\Users\user\Downloads\ConfigureRemotingForAnsible.ps1 파워쉘에서 실행 ansible-server에서 vi /ect/ansible/host [local] localhost [docker] 172.17.0.3 [windows] 본인 컴퓨터(윈도우) host pc의 ip입력 [windows:vars] ansible_password='본인 컴퓨터((윈도우) host pc 비밀번호 입력' ansible_connection=winrm ansible_winrm_server_cert_validation=ignore ansible_user=user ansible_port=5986 를 작성해서 저장 ansible windows -m win_ping -u user win_ping으로 핑 테스트 하면 정상 동작함 ➕ ./k8s/hosts파일 에서 [kubernetes]도 [kubernetes:vars] 위와 같이 작성해줘야 -i ./k8s/hosts kubernetes 로 win_ping 보냈을 때 응답 받을 수 있어요