Chef(bootstrap, knife ssh) - chef-server 가 target node 의 default gateway 측에 없는 경우

4725 단어 chef
Workstation에서 node로 Bootstrap 할 때 Chef Server에 등록 된 node의 ip address는
default gateway 측의 ip address가 선택됩니다.
이 상태에서는 Workstation에서 knife ssh 할 수 없다. 무슨 일이야. . .





Workstation에서 Bootstrap


[workstation]$ knife bootstrap 10.10.0.10 -x root -N node01 -E lab --sudo
~~ 省略 ~~
Connecting to 10.10.0.10
10.10.0.10 Starting first Chef Client run...
10.10.0.10 Starting Chef Client, version 12.5.1
10.10.0.10 Creating a new client identity for node01 using the validator key.
10.10.0.10 resolving cookbooks for run list: []
10.10.0.10 Synchronizing Cookbooks:
10.10.0.10 Compiling Cookbooks...
10.10.0.10 [yyyy-mm-ddThh:mm:ss+00:00] WARN: Node node01 has an empty run list.
10.10.0.10 Converging 0 resources
10.10.0.10
10.10.0.10 Running handlers:
10.10.0.10 Running handlers complete
10.10.0.10 Chef Client finished, 0/0 resources updated in 13 seconds

Chef Server에 등록된 노드의 정보 확인



Default Gateway 측의 ip address 등록
[workstation]$ knife node show node01
Node Name:   node01
Environment: lab
FQDN:        node01
IP:          192.168.0.10
Run List:
Roles:
Recipes:
Platform:    centos 7.0
Tags:

Workstation에서 ssh 할 수 없음


[workstation]$ knife ssh 'name:node01' hostname -x root
could not access

해결 방법


  • knife ssh 로 attribute 를 지정한다
  • node의 ip address 변경
  • custom ohai plugin 사용

  • 1. knife ssh에서 attribute 지정



    Default의 ipaddress가 아니라,


    [node]# ohai | grep ipaddress
      "ipaddress": "192.168.0.10",
    

    다른 ip address를 지정하고 싶습니다.


    [workstation]$ knife ssh 'name:node01' hostname -x root -a <ATTRIBUTE>
    

    예를 들어,이 attribute를 지정하고 싶습니다.


  • chef-apply
  • [node]# chef-apply -e 'puts node[:network][:interfaces][:eth1][:routes][0][:src]'
    10.10.0.10
    
  • chef-shell
  • [node]# chef-shell -z
    chef (12.5.1)> attributes_mode
    chef:attributes (12.5.1)>
    chef:attributes > node[:network][:interfaces][:eth1][:routes][0][:src]
     => "10.10.0.10"
    

    그러나 knife ssh의 attribute에는 지정할 수 없습니다. 어쩌면 지정 방법이 잘못되었을 것입니다.


    [workstation]$ knife ssh 'name:node01' hostname -x root -a network.interfaces.eth1.routes.[0].src
    ERROR: TypeError: no implicit conversion of String into Integer
    
    [workstation]$ knife ssh 'name:node01' hostname -x root -a network.interfaces.eth1.routes.0.src
    ERROR: TypeError: no implicit conversion of String into Integer
    

    포기해 No2에. . .

    2. node의 ip address 변경



    Download node json file


    [workstation]$ knife download nodes/node01.json
    Created nodes/node01.json
    

    json 수정


  • ipaddress 변경
  • [workstation]$ vi nodes/node01.json
    
  • Workstation 과 Chef Server 비교
  • [workstation]$ knife diff nodes/node01.json
    diff --knife nodes/node01.json nodes/node01.json
    --- nodes/node01.json  yyyy-mm-dd hh:mm:ss.000000000 +0900
    +++ nodes/node01.json  yyyy-mm-dd hh:mm:ss.000000000 +0900
    @@ -2254,7 +2254,7 @@
             }
           }
         },
    -    "ipaddress": "192.168.0.10",
    +    "ipaddress": "10.10.0.10",
         "macaddress": "00:00:00:00:00:00",
         "ip6address": "0000::0000:0000:0000:0000",
         "cpu": {
    

    Upload node json file


    [workstation]$ knife upload nodes/node01.json
    

    Chef server 등록 상태 확인


    [workstation]$ knife node show node01
    Node Name:   node01
    Environment: lab
    FQDN:        node01
    IP:          10.10.0.10
    Run List:
    Roles:
    Recipes:
    Platform:    centos 7.0
    Tags:
    

    Ssh test


    [workstation]$ knife ssh 'name:node01' hostname -x root
    node01 node01
    

    3. custom ohai plugin 사용



    htps : // / cs. 치오 f. 이오/하이_쿠 s와 m. HTML

    bootstrap시에 default gateway 이외의 ip address 를 chef server 에 등록하도록(듯이) 한다.

    환경


    [chef server]# rpm -q chef-server-core
    chef-server-core-12.1.2-1.el7.x86_64
    
    [workstation]]# knife --version
    Chef: 12.3.0
    
    [node]# chef-client --version
    Chef: 12.5.1
    

    좋은 웹페이지 즐겨찾기