RHELの register と auto-subscribe がエラーとなる様になった > 解消

# 解消？

2020/08/18には問題が収まっている様子。
generic/rhel8  3.0.20
にて確認



# 問題

Red Hat Enterprise Linux Server VERSION 7.8 (Maipo) 環境にて、今まで成功していたサブスクリプションの登録が失敗する様になった。
2020/08/14ごろから？

## 対象
少なくとも以下で確認されたが、どのレベルでも同様と思える

- vagrant box: 
    - generic/rhel7        (virtualbox, 3.0.6)
    - generic/rhel7        (virtualbox, 3.0.24)
    - generic/rhel8        (virtualbox, 3.0.6)

RedHat公式のboxでない為の可能性もあるが。。

## 失敗する様になったAnsible Playbookのtask例

```yaml
- name: Register by username/password and auto-subscribe to available content.
  redhat_subscription:
    username: "{{ lookup('env', 'REDHAT_SUBSCRIPTION_USERNAME' ) }}"
    password: "{{ lookup('env', 'REDHAT_SUBSCRIPTION_PASSWORD' ) }}"
    auto_attach: true
    force_register: true
  register: r
  until: r is succeeded
```

参考
https://qiita.com/hiroyuki_onodera/items/85c06d0d7a15aaea97a6

## subscription-manager registerコマンドレベルで失敗

切り分けを行うと、subscription-manager registerコマンドレベルで以下の様に失敗していた。

RHEL7の場合

```
# subscription-manager register --username=USERNAME --password=PASSWORD --auto-attach 
Registering to: subscription.rhsm.redhat.com:443/subscription
The system has been registered with ID: 101cd601-31cf-4dd2-9ba8-a578c8c7ed92
The registered system name is: haicu3-rhel7
Traceback (most recent call last):
  File "/sbin/subscription-manager", line 9, in <module>
    load_entry_point('subscription-manager==1.24.26', 'console_scripts', 'subscription-manager')()
  File "/usr/lib64/python2.7/site-packages/subscription_manager/scripts/subscription_manager.py", line 86, in main
    return managercli.ManagerCLI().main()
  File "/usr/lib64/python2.7/site-packages/subscription_manager/managercli.py", line 2989, in main
    ret = CLI.main(self)
  File "/usr/lib64/python2.7/site-packages/subscription_manager/cli.py", line 183, in main
    return cmd.main()
  File "/usr/lib64/python2.7/site-packages/subscription_manager/managercli.py", line 536, in main
    return_code = self._do_command()
  File "/usr/lib64/python2.7/site-packages/subscription_manager/managercli.py", line 1398, in _do_command
    profile_mgr.update_check(self.cp, consumer['uuid'], True)
  File "/usr/lib64/python2.7/site-packages/subscription_manager/cache.py", line 468, in update_check
    return CacheManager.update_check(self, uep, consumer_uuid, force)
  File "/usr/lib64/python2.7/site-packages/subscription_manager/cache.py", line 183, in update_check
    raise Exception(_("Error updating system data on the server, see /var/log/rhsm/rhsm.log "
Exception: Error updating system data on the server, see /var/log/rhsm/rhsm.log for more details.

# echo $?
1
```



RedHatのサイトにて確認すると、システムの登録はされているが アタッチ済みサブスクリプション数 0 の状態であり、結果として yum repo が使用できない。

https://access.redhat.com/management/systems


# 回避

registerはされているので、サブスクリプションのアタッチのみ別途実施

## subscription-managerコマンドによる回避
RHEL7にて確認

```
# subscription-manager attach --auto
Installed Product Current Status:
Product Name: Red Hat Enterprise Linux Server
Status:       Subscribed

# echo $?
0
```

これでyumなどが使用できる様になった。
繰り返し実施しても正常終了

```
# subscription-manager attach --auto
All installed products are covered by valid entitlements. No need to update subscriptions at this time.
Installed Product Current Status:
Product Name: Red Hat Enterprise Linux Server
Status:       Subscribed

# echo $?
0
```

## Ansible Playbookのtaskにおける回避例

```yaml
- name: Register by username/password and auto-subscribe to available content.
  shell: |
    subscription-manager register \
    --username={{ lookup('env', 'REDHAT_SUBSCRIPTION_USERNAME' ) }} \
    --password={{ lookup('env', 'REDHAT_SUBSCRIPTION_PASSWORD' ) }}
    subscription-manager attach --auto
  register: r
  until: r is succeeded
```