Ansible pre_tasks란 무엇입니까? 원격 호스트[Linux]에 OS 업데이트, Python 설치 및 JRE 설치 방법은 무엇입니까?
게시 됨: 2019-05-10Ansible에서 pre_tasks란 무엇입니까?
pre_tasks
는 .yml
파일에 언급된 tasks
을 실행하기 전에 Ansible이 실행하는 작업입니다.
이 시나리오를 고려하십시오. Amazon EC2
Google Cloud
또는 GCP에 새 인스턴스를 프로비저닝했습니다. 가장 먼저 해야 할 일은 OS 업데이트를 설치하는 것입니다. 그런 다음 최신 Python을 설치하고 Java를 설치하는 등의 작업을 수행합니다.
위의 모든 사전 작업이 완료되면 애플리케이션을 복사하고 해당 애플리케이션을 시작해야 합니다. 애플리케이션 종속성을 복사하기 전에 모든 기본 바이너리를 설치하는 것은 매우 필수입니다.
이 튜토리얼에서는 Ansible pre_task
태그를 사용하여 사전 작업을 실행하는 방법에 대한 모든 세부 정보를 살펴보겠습니다.
이 자습서에서는 아래 시나리오를 따릅니다.
- 파일
crunchify-hosts
파일을 만들고 pre_task를 실행할 IP를 추가합니다. - 가능한 플레이
crunchify-install-python-java.yml
파일을 생성합니다.- pre_task: python-simplejson 설치
- pre_task: python-minimal 설치
- pre_task: 시스템 업데이트 설치
- pre_task: 최신 JRE 설치
- 파이썬 버전 받기
- 자바 버전 받기
- 모든 디버그 결과 인쇄
- 모든 작업을 수행할 ansible-playbook -i ./crunchify-hosts crunchify-install-python-java.yml 명령을 실행합니다.
crunchify 호스트 파일
1 2 3 4 5 6 7 8 9 10 |
[ local ] localhost ansible_connection = local ansible_python_interpreter = python [ crunchify ] 13.58.187.197 [ crunchify : vars ] ansible_ssh_user = ubuntu ansible_ssh_private_key_file =/ Users / crunchify / Documents / ansible / crunchify . pem ansible_python_interpreter =/ usr / bin / python3 |
여기서 보시다시피 암호 없는 인증을 위해 crunchify.pem
파일을 사용하고 있습니다. 암호 프롬프트 없이 간단히 호스트에 연결할 수 있습니다.
crunchify-install-python-java.yml 파일
Ansible에서 register
키워드를 사용하여 변수를 등록하고 있습니다. raw
작업의 반환 값을 저장합니다.
debug
및 stdout_lines
의 도움으로 명령줄에 결과를 인쇄할 수 있습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
--- - hosts : crunchify become : yes pre_tasks : - raw : sudo apt - get - y install python - simplejson register : py_simple_output - raw : sudo apt - get - y install python - minimal register : py_minimal_output - raw : sudo apt - get update register : system_output - raw : sudo apt - get install - y default - jre register : java_output tasks : - debug : var = py_simple_output . stdout_lines - debug : var = py_minimal_output . stdout_lines - debug : var = system_output . stdout_lines - debug : var = java_output . stdout_lines - name : get Python version shell : python -- version 2 > &1 register : py_output - debug : var = py_output . stdout_lines - name : get Java version shell : java -- version 2 > &1 register : java_output - debug : var = java_output . stdout_lines |
실행 명령:
ansible-playbook -i ./crunchify-hosts crunchify-install-python-java.yml
앤서블 출력:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 |
bash1 . 2 $ ansible - playbook - i . / crunchify - hosts crunchify - install - python - java . yml PLAY [ crunchify ] *************************************************************************************************************************************************** TASK [ Gathering Facts ] ********************************************************************************************************************************************* ok : [ 13.58.187.197 ] TASK [ raw ] ********************************************************************************************************************************************************* changed : [ 13.58.187.197 ] TASK [ raw ] ********************************************************************************************************************************************************* changed : [ 13.58.187.197 ] TASK [ raw ] ********************************************************************************************************************************************************* changed : [ 13.58.187.197 ] TASK [ raw ] ********************************************************************************************************************************************************* changed : [ 13.58.187.197 ] TASK [ debug ] ******************************************************************************************************************************************************* ok : [ 13.58.187.197 ] = > { "py_simple_output.stdout_lines" : [ "" , "Reading package lists... 0%" , "" , "Reading package lists... 100%" , "" , "Reading package lists... Done" , "" , "" , "Building dependency tree... 0%" , "" , "Building dependency tree... 50%" , "" , "Building dependency tree " , "" , "" , "Reading state information... 0%" , "" , "Reading state information... Done" , "" , "python-simplejson is already the newest version (3.13.2-1)." , "0 upgraded, 0 newly installed, 0 to remove and 76 not upgraded." ] } TASK [ debug ] ******************************************************************************************************************************************************* ok : [ 13.58.187.197 ] = > { "py_minimal_output.stdout_lines" : [ "" , "Reading package lists... 0%" , "" , "Reading package lists... 100%" , "" , "Reading package lists... Done" , "" , "" , "Building dependency tree... 0%" , "" , "Building dependency tree... 50%" , "" , "Building dependency tree " , "" , "" , "Reading state information... 0%" , "" , "Reading state information... Done" , "" , "python-minimal is already the newest version (2.7.15~rc1-1)." , "0 upgraded, 0 newly installed, 0 to remove and 76 not upgraded." ] } TASK [ debug ] ******************************************************************************************************************************************************* ok : [ 13.58.187.197 ] = > { "system_output.stdout_lines" : [ "" , "0% [Working]" , " " , "Hit:1 http://us-east-2.ec2.archive.ubuntu.com/ubuntu bionic InRelease" , "" , "0% [Connecting to security.ubuntu.com (91.189.88.162)]" , " " , "Hit:2 http://us-east-2.ec2.archive.ubuntu.com/ubuntu bionic-updates InRelease" , "" , " " , "Get:3 http://us-east-2.ec2.archive.ubuntu.com/ubuntu bionic-backports InRelease [74.6 kB]" , "" , "0% [Connecting to security.ubuntu.com (91.189.88.162)]" , "0% [1 InRelease gpgv 242 kB] [Connecting to security.ubuntu.com (91.189.88.162)" , " " , "0% [Connecting to security.ubuntu.com (91.189.88.162)]" , "0% [2 InRelease gpgv 88.7 kB] [Connecting to security.ubuntu.com (91.189.88.162" , " " , "0% [Waiting for headers]" , "0% [3 InRelease gpgv 74.6 kB] [Waiting for headers]" , " " , "Hit:4 http://security.ubuntu.com/ubuntu bionic-security InRelease" , "" , " " , "0% [3 InRelease gpgv 74.6 kB]" , " " , "0% [Working]" , "0% [4 InRelease gpgv 88.7 kB]" , " " , "100% [Working]" , " " , "Fetched 74.6 kB in 0s (249 kB/s)" , "" , "Reading package lists... 0%" , "" , "Reading package lists... 5%" , "" , "Reading package lists... 8%" , "" , "Reading package lists... 53%" , "" , "Reading package lists... 79%" , "" , "Reading package lists... 99%" , "" , "Reading package lists... Done" , "" ] } TASK [ debug ] ******************************************************************************************************************************************************* ok : [ 13.58.187.197 ] = > { "java_output.stdout_lines" : [ "" , "Reading package lists... 0%" , "" , "Reading package lists... 100%" , "" , "Reading package lists... Done" , "" , "" , "Building dependency tree... 0%" , "" , "Building dependency tree... 50%" , "" , "Building dependency tree " , "" , "" , "Reading state information... 0%" , "" , "Reading state information... Done" , "" , "default-jre is already the newest version (2:1.11-68ubuntu1~18.04.1)." , "0 upgraded, 0 newly installed, 0 to remove and 76 not upgraded." ] } TASK [ get Python version ] ****************************************************************************************************************************************** changed : [ 13.58.187.197 ] TASK [ debug ] ******************************************************************************************************************************************************* ok : [ 13.58.187.197 ] = > { "py_output.stdout_lines" : [ "Python 2.7.15rc1" ] } TASK [ get Java version ] ******************************************************************************************************************************************** changed : [ 13.58.187.197 ] TASK [ debug ] ******************************************************************************************************************************************************* ok : [ 13.58.187.197 ] = > { "java_output.stdout_lines" : [ "openjdk 11.0.2 2019-01-15" , "OpenJDK Runtime Environment (build 11.0.2+9-Ubuntu-3ubuntu118.04.3)" , "OpenJDK 64-Bit Server VM (build 11.0.2+9-Ubuntu-3ubuntu118.04.3, mixed mode, sharing)" ] } PLAY RECAP * ******************************************************************************************************************************************************** 13.58.187.197 : ok = 13 changed = 6 unreachable = 0 failed = 0 |
그게 다야

보시다시피 이 튜토리얼에서는 원격 호스트에 Python, Java 및 시스템 업데이트를 설치했습니다. 또한 결과를 mac 터미널 창으로 반환했습니다.
무엇 향후 계획?
로컬 호스트에서 원격 호스트로 파일, 디렉토리 또는 스크립트를 복사하는 방법에 대한 자습서를 확인하십시오.